yaml
Hallo mensen,
Ik zie regelmatig voorbij komen dat YAML gebruikt wordt voor configuratiebestanden.
Wat is YAML precies, en in welk opzicht is het beter of makkelijker dan bijvoorbeeld een .ini bestand of simpelweg een PHP array met configuratiesettings?
Ik ben vooral benieuwd naar het voordeel ten opzichte van een PHP array.
Wie kan er meer over vertellen?
Thanks!
Ik zie regelmatig voorbij komen dat YAML gebruikt wordt voor configuratiebestanden.
Wat is YAML precies, en in welk opzicht is het beter of makkelijker dan bijvoorbeeld een .ini bestand of simpelweg een PHP array met configuratiesettings?
Ik ben vooral benieuwd naar het voordeel ten opzichte van een PHP array.
Wie kan er meer over vertellen?
Thanks!
Yaml is een format language, zoals XML en INI. Het voordeel hiervan is dat je er echt alleen maar dingen kan instellen, je kan niet (zoals met PHP) ook nog dingen gaan veranderen. Hierdoor ben je zekerder dat alles nog klopt in je applicatie.
Vervolgens kun je uit verschillende formats kiezen. Ini is zeer beperkt, het enige wat die kan is waardes opslaan dus echt key => string en geen array oid, ik zal zelf ini dus vergeten. Dan heb je Yaml, deze is zeer leesbaar voor de meeste computer noobs en is erg simpel in gebruik. Het lijkt een beetje op Ini, maar is veeeeel krachtiger. Xml is dan weer heel krachtig, maar is weer wat moeilijker in gebruik.
Een voorbeeldje van een Yaml syntax:
Vervolgens kun je uit verschillende formats kiezen. Ini is zeer beperkt, het enige wat die kan is waardes opslaan dus echt key => string en geen array oid, ik zal zelf ini dus vergeten. Dan heb je Yaml, deze is zeer leesbaar voor de meeste computer noobs en is erg simpel in gebruik. Het lijkt een beetje op Ini, maar is veeeeel krachtiger. Xml is dan weer heel krachtig, maar is weer wat moeilijker in gebruik.
Een voorbeeldje van een Yaml syntax:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Yaml
====
framework:
dbal:
user: root
password: ~
db: foobar
security:
secret_key: dae8q97ghquwie6t67
modules:
- Application
- Guestbook
Xml
===
<?xml version="1.0" encoding="utf-8"?>
<framework:config>
<framework:dbal>
user="root"
password=""
db="foobar"
/>
<framework:security
secret-key="dae8q97ghquwie6t67"
/>
<framework:module>Application</framework:module>
<framework:module>Guestbook</framework:module>
</framework:config>
Php
===
return array(
'framework' => array(
'dbal' => array(
'user' => 'root',
'password' => null,
'db' => 'foobar',
),
'security' => array(
'secret_key' => 'dae8q97ghquwie6t67',
),
'modules' => array('Application', 'Guestbook'),
),
);
====
framework:
dbal:
user: root
password: ~
db: foobar
security:
secret_key: dae8q97ghquwie6t67
modules:
- Application
- Guestbook
Xml
===
<?xml version="1.0" encoding="utf-8"?>
<framework:config>
<framework:dbal>
user="root"
password=""
db="foobar"
/>
<framework:security
secret-key="dae8q97ghquwie6t67"
/>
<framework:module>Application</framework:module>
<framework:module>Guestbook</framework:module>
</framework:config>
Php
===
return array(
'framework' => array(
'dbal' => array(
'user' => 'root',
'password' => null,
'db' => 'foobar',
),
'security' => array(
'secret_key' => 'dae8q97ghquwie6t67',
),
'modules' => array('Application', 'Guestbook'),
),
);
Ah... thanks Wouter. Da's weer zoals altijd een erg heldere uitleg!
Ziet er goed uit.
Waarmee kan ik zo'n yaml file uitlezen. Wat is de makkelijkste 'reader' daarvoor?
Ziet er goed uit.
Waarmee kan ik zo'n yaml file uitlezen. Wat is de makkelijkste 'reader' daarvoor?
Ini kan je ook arrays in opslaan, maar er zijn inderdaad betere opties :)
Ja, maar volgens mij kan je in een ini bestand geen multi-dimensionale array opslaan, en zo te zien in yaml wel. Dat is wel een groot voordeel.
Alleen wil ik dan nog graag een goede, makkelijke reader weten.
Alleen wil ik dan nog graag een goede, makkelijke reader weten.
Gewoon met een yaml_parse_file(); natuurlijk :) het is hetzelfde als ini file alleen dan met yaml
http://php.net/manual/en/function.yaml-parse.php
http://php.net/manual/en/function.yaml-parse.php
Ah oke, dank je. Ik zie dat dat nog niet geinstalleerd is op mijn server. Heb je een idee hoe ik dat moet installeren (via Putty)?
Volgensmij staat er wel een uitleg bij: http://php.net/manual/en/book.yaml.php
Je hoeft niet persée die php extension te gebruiken, maar de yaml component van symfony werkt ook gewoon.
Helaas snap ik dat (nog) niet zo goed hoe dat werkt. Ik hoop dat er iemand is die even kan zeggen wat ik moet intypen in Putty.
Toevoeging op 12/01/2013 18:41:12:
@Raoul... ik gebruik geen Symfony.
Die Reshad aanraadde lijkt me wel handig omdat je dan een aparte functie kunt gebruiken. Maar ik weet dus alleen niet hoe ik het moet installeren via Putty.
Toevoeging op 12/01/2013 18:41:12:
@Raoul... ik gebruik geen Symfony.
Die Reshad aanraadde lijkt me wel handig omdat je dan een aparte functie kunt gebruiken. Maar ik weet dus alleen niet hoe ik het moet installeren via Putty.
@Ozzie: Dus? Ook al gebruik je geen Symfony, je kan ook gewoon losse components van Symfony via Composer binnenhalen.
Oké, maar zoals ik zei lijkt me de plugin die Reshad aanraadde handig, dan krijg ik een aparte functie.
Ozzie, die plugin is maar bij heel weinig servers geïnstalleerd. Het lijkt me beter om gewoon iets als de parser van Symfony of de parser van Zend te gebruiken. Dat zijn gewoon een paar klassen die je hoeft te downloaden en te gebruiken, je hoeft dan echt niet het hele framework te gebruiken. Dat is namelijk juist de kracht van Symfony, het zijn allemaal losse dingen die overal te gebruiken zijn.
Wouter, ik snap het... maar aangezien ik nu een VPS heb, zou ik die plugin gewoon moeten kunnen installeren en dan is die functie als het ware een "native" php functie. Alleen ik moet nog ff uitvogelen hoe ik 'm moet installeren. Daar ben ik nog niet zo in thuis helaas.
Ozzie PHP op 12/01/2013 20:20:40:
Wouter, ik snap het... maar aangezien ik nu een VPS heb, zou ik die plugin gewoon moeten kunnen installeren en dan is die functie als het ware een "native" php functie. Alleen ik moet nog ff uitvogelen hoe ik 'm moet installeren. Daar ben ik nog niet zo in thuis helaas.
Ja, en als je dan gaat wisselen van server of je staat tijdelijk op een shared hosting?
Naja, doe jij maar veel moeite om 'een PHP achtige functie' te installeren op een host waardoor je meteen je framework onbruikbaar maakt voor andere servers...
Je kan dan beter die van bijv. Zend installeren. Die kijkt namelijk eerst of de extensie beschikbaar is en anders moet je een fallback parser (zoals die van Symfony) inladen.
Je kan dan beter die van bijv. Zend installeren. Die kijkt namelijk eerst of de extensie beschikbaar is en anders moet je een fallback parser (zoals die van Symfony) inladen.
Gewijzigd op 12/01/2013 20:33:29 door Wouter J
Het framework is voor m'n eigen sites bedoeld en draait op m'n eigen VPS. Ik zal wel kijken wat ik doe.




