ΠΡΠ±Π»ΠΈΠΊΡΡΡΠΈΠ΅ callback-ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ
yaml_emit() ΠΈΠ»ΠΈ yaml_emit_file()
ΠΏΡΠ±Π»ΠΈΠΊΡΡΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΊΠ»Π°ΡΡΠΎΠ² . Π ΡΡΠ½ΠΊΡΠΈΡ
ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. Callback-ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Π΅ΡΠ½ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² Ρ Π΄Π²ΡΠΌΡ ΠΊΠ»ΡΡΠ°ΠΌΠΈ:
"tag" ΠΈ "data".
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ΅ Ρ ΠΊΠ»ΡΡΠΎΠΌ "tag" Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ
ΡΡΡΠΎΠΊΠΎΠΉ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΉ ΡΠ΅Π³ YAML Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π°. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ΅ Ρ ΠΊΠ»ΡΡΠΎΠΌ
"data" Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΊΠ°ΠΊ YAML
ΠΈ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠ΅ΡΠ΅Ρ
Π²Π°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠ±Π»ΠΈΠΊΡΡΡΠ΅ΠΉ callback-ΡΡΠ½ΠΊΡΠΈΠΈ
<?php
class EmitExample {
public $data; // Π΄Π°Π½Π½ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠ³ΠΎ pecl/yaml ΡΠΈΠΏΠ°
public function __construct ($d) {
$this->data = $d;
}
/**
* ΠΡΠ±Π»ΠΈΠΊΡΡΡΠ°Ρ callback-ΡΡΠ½ΠΊΡΠΈΡ Yaml.
*
* ΠΠΆΠΈΠ΄Π°Π΅ΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° Ρ Π΄Π²ΡΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ 2:
* - 'tag': ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΡΠ΅Π³ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ
* - 'data': Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² yaml (ΠΌΠ°ΡΡΠΈΠ², ΡΡΡΠΎΠΊΠ°, Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅, ΡΠΈΡΠ»ΠΎ)
*
* @param object $obj ΠΡΠ±Π»ΠΈΠΊΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ
* @return array Π’Π΅Π³ ΠΈ Π·Π°ΠΌΠ΅ΡΠ°ΡΡΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ
*/
public static function yamlEmit (EmitExample $obj) {
return array(
'tag' => '!example/emit',
'data' => $obj->data,
);
}
}
$emit_callbacks = array(
'EmitExample' => array('EmitExample', 'yamlEmit')
);
$t = new EmitExample(array('a','b','c'));
$yaml = yaml_emit(
array(
'example' => $t,
),
YAML_ANY_ENCODING,
YAML_ANY_BREAK,
$emit_callbacks
);
var_dump($yaml);
?>ΠΡΠ²ΠΎΠ΄ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡ ΠΎΠΆ Π½Π°:
string(43) "--- example: !example/emit - a - b - c ... "