YAML è una notazione nata nel 2001 per la serializzazione standard dei dati come XML ed è la notazione pricipale per Symfony.
YAML significa ‘YAML Ain’t Markup Language’ cioè è una notazione senza marker, infatti a differenza di XML non presenta marker, ma la struttura dei dati è mostrata tramite l’indentazione (l’utilizzo degli spazi e dell’andare a capo). Vediamo di seguito degli esempi pratici.

OGGETTO PHP


$house = array(
  'family' => array(
    'name'     => 'Doe',
    'parents'  => array('John', 'Jane'),
    'children' => array('Paul', 'Mark', 'Simone')
  ),
  'address' => array(
    'number'   => 34,
    'street'   => 'Main Street',
    'city'     => 'Nowheretown',
    'zipcode'  => '12345'
  )
);

YAML sintassi lunga


house:
  family:
    name:     Doe
    parents:
      - John
      - Jane
    children:
      - Paul
      - Mark
      - Simone
  address:
    number: 34
    street: Main Street
    city: Nowheretown
    zipcode: "12345"

YAML sentassi breve


house:
  family: { name: Doe, parents: [John, Jane], children: [Paul, Mark, Simone] }
  address: { number: 34, street: Main Street, city: Nowheretown, zipcode: "12345" }

Notare per gli array [], per gli hash {}

Un altro esempio comparativo YAMS XML JSON

XML


<people>
    <person>
        <firstName>Charles</firstName> <lastName>Schulz</lastName>
    </person>
    <person>
        <firstName>Walt</firstName> <middleName>Elias</middleName>
        <lastName>Disney</lastName>
    </person>
    <person>
        <firstName>Gary</firstName> <lastName>Larson</lastName>
    </person>
</people>

JSON


{
  “people”: [
    { “person”: {
         “firstName”: “Charles”,
         “lastName”: “Schulz”
         }
    },
    { “person”: {
         “firstName”: “Walt”,
         “middleName”: “Elias”,
         “lastName”: “Disney”
         }
    },
    { “person”: {
         “firstName”: “Gary”,
         “lastName”: “Larson”
         }
    }
  ]
}

YAML


people: 
  - 
    person: {firstName: Charles, lastName: Schulz }
  - 
    person:
       firstName: Walt
       middleName: Elias
       lastName: Disney
       characters: [ Mickey, Donald, Goofy ] 
  - 
    person:
       firstName: Gary
       lastName: Larson