CakeFest 2024: The Official CakePHP Conference

yaml_emit

(PECL yaml >= 0.5.0)

yaml_emitDevuelve la representación de un valor YAML

Descripción

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

Genera una representación YAML de los datos en data proporcionados.

Parámetros

data

La data se codifica. Puede ser de cualquier tipo excepto un resource.

encoding

Salida de codificación de caracteres elegidos desde YAML_ANY_ENCODING, YAML_UTF8_ENCODING, YAML_UTF16LE_ENCODING, YAML_UTF16BE_ENCODING.

linebreak

Estilo de salida de línea de salto desde: YAML_ANY_BREAK, YAML_CR_BREAK, YAML_LN_BREAK, YAML_CRLN_BREAK.

callbacks

Gestores de contenido para emitir nodos YAML. array asociativo de referenciaciones de nombres de clase => callable. Véase emitir llamadas de retorno para más detalles.

Valores devueltos

Devuelve un string de YAML codificado si es correcto.

Historial de cambios

Versión Descripción
PECL yaml 1.1.0 Se añadió el parámetro callbacks.

Ejemplos

Ejemplo #1 Ejemplo de 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));
?>

El resultado del ejemplo sería algo similar a:

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.
...
"

Ver también

add a note

User Contributed Notes 2 notes

up
1
josh dot sickmate at gmail dot com
4 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
10 months 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