PHP Conference Nagoya 2025

yaml_emit

(PECL yaml >= 0.5.0)

yaml_emitRetourne une chaîne représentant une valeur YAML

Description

yaml_emit(
    mixed $data,
    int $encoding = YAML_ANY_ENCODING,
    int $linebreak = YAML_ANY_BREAK,
    array $callbacks = null
): string

Génère une représentation YAML de la donnée data.

Liste de paramètres

data

Les données à encoder. Peut être de tout type sauf resource.

encoding

Encodage des caractères en sortie choisi parmi YAML_ANY_ENCODING, YAML_UTF8_ENCODING, YAML_UTF16LE_ENCODING, YAML_UTF16BE_ENCODING.

linebreak

Caractère de fin de ligne choisi parmi YAML_ANY_BREAK, YAML_CR_BREAK, YAML_LN_BREAK, YAML_CRLN_BREAK.

callbacks

Gestionnaires de contenu pour l'émission de nœud YAML. Doit être un tableau associatif de paires "nom de classe" => callable. Voir l'émission de fonctions de rappel pour plus de détails.

Valeurs de retour

Retourne une chaîne YAML en cas de succès.

Historique

Version Description
PECL yaml 1.1.0 Le paramètre callbacks a été ajouté.

Exemples

Exemple #1 Exemple yaml_emit()

<?php
$addr
= array(
"given" => "Chris",
"family"=> "Dumars",
"address"=> array(
"lines"=> "458 Walkman Dr.
Suite #292"
,
"city"=> "Royal Oak",
"state"=> "MI",
"postal"=> 48046,
),
);
$invoice = array (
"invoice"=> 34843,
"date"=> 980208000,
"bill-to"=> $addr,
"ship-to"=> $addr,
"product"=> array(
array(
"sku"=> "BL394D",
"quantity"=> 4,
"description"=> "Basketball",
"price"=> 450,
),
array(
"sku"=> "BL4438H",
"quantity"=> 1,
"description"=> "Super Hoop",
"price"=> 2392,
),
),
"tax"=> 251.42,
"total"=> 4443.52,
"comments"=> "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.",
);
var_dump(yaml_emit($invoice));
?>

Résultat de l'exemple ci-dessus est similaire à :

string(628) "---
invoice: 34843
date: 980208000
bill-to:
  given: Chris
  family: Dumars
  address:
    lines: |-
      458 Walkman Dr.
              Suite #292
    city: Royal Oak
    state: MI
    postal: 48046
ship-to:
  given: Chris
  family: Dumars
  address:
    lines: |-
      458 Walkman Dr.
              Suite #292
    city: Royal Oak
    state: MI
    postal: 48046
product:
- sku: BL394D
  quantity: 4
  description: Basketball
  price: 450
- sku: BL4438H
  quantity: 1
  description: Super Hoop
  price: 2392
tax: 251.420000
total: 4443.520000
comments: Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.
...
"

Voir aussi

add a note

User Contributed Notes 2 notes

up
1
josh dot sickmate at gmail dot com
5 years ago
There isn't an option for indenting depth so it's always two spaces. If you want more than this you can use a simple regex.

Converting from two spaces to four:
<?php
$yaml
= preg_replace('/^( +)/m', '$1$1', $yaml);
?>

Add two more $1 into the replacement for eight spaces.
up
1
nsa at succhia dot cz
1 year ago
Note that NULL values will be converted to the tilde character "~".

This can be somehow counter-intuitive, but that is absolutely legit, and it seems it is a standard recognized by every Yaml parser. So, don't worry about that. Yaml reference:

http://yaml.org/spec/1.2-old/spec.html#id2805071
To Top