| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- <sect1 id="zend.config.theory_of_operation">
- <title>Werkingstheorie</title>
- <para>
- Configuratiedata wordt toegankelijk gemaakt voor de <code>Zend_Config</code> constructor
- via een associatieve array, welke multidimensioneel kan zijn, om het organizeren van de
- data van alemeen naar specifiek te ondersteunen. Er bestaan concrete functies van
- de hulpklassen om de configuratiedata aan te passen vanuit het bestand om een associatieve
- array voor de constructor van <code>Zend_Config</code> aan te maken. Gebruikerscripts
- kunnen deze arrays direct doorgeven aan de constructor van <code>Zend_Config</code>,
- zonder een hulpklasse te gebruiken. Dit kan toepasselijk zijn in sommige situaties.
- </para>
- <para>
- Elke configuratie data array waarde wordt een eigenschap van het <code>Zend_Config</code> object.
- De key wordt gebruikt als de naam van de eigenschap. Als de waarde zelf een array is, dan zal hiervoor
- een nieuw <code>Zend_Config</code> object worden gemaakt, waarin de array data geladen wordt. Dit gebeurt
- recursief, zodat er een hiërarchie van configuratie data gemaakt kan worden van elke hoeveelheid niveaus.
- </para>
- <para>
- <code>Zend_Config</code> implementeert de <code>Countable</code> en <code>Iterator</code>
- interfaces om eenvoudige toegang tot de configuratiedata te vergemakkelijken. Je kan dus
- de <ulink url="http://php.net/count"><code>count()</code></ulink> functie en PHP
- constructies zoals <ulink url="http://php.net/foreach"><code>foreach</code></ulink>
- gebruiken op <code>Zend_Config</code> objecten.
- </para>
- <para>
- Standaard is de configuratiedata die beschikbaar wordt gemaakt via <code>Zend_Config</code>
- alleen lezen, en het toewijzen van een waarde
- (bv: <code><![CDATA[$config->database->host = 'example.com']]></code>) resulteert in het
- opwerpen van een uitzondering. Deze standaardeigenschap kan worden gewijzigd via de
- constructor om het wijzigen van waarden toe te staan. Ook, wanneer wijzigingen zijn toegstaan,
- ondersteunt <code>Zend_Config</code> het verwijderen van waardes
- (i.e. <code><![CDATA[unset($config->database->host);]]></code>).
- </para>
- <note>
- <para>
- Het is belangrijk zulke in-memory wijzigingen niet te verwarren met het opslaan van
- configuratiedata in een specifieke opslagmedia. Programma's voor het aanmaken en wijzigen
- van configuratiedata voor de verschillende opslagmedia worden hier niet besproken, want ze
- vallen buiten het bereik van <code>Zend_Config</code>. Open source toepassingen van derden zijn
- beschikbaar voor het aanmaken en wijzigen van configuratiedata voor verschillende
- opslagmedia.
- </para>
- </note>
- <para>
- Hulpklassen erven van de <code>Zend_Config</code> klasse want ze gebruiken haar
- functionaliteiten.
- </para>
- <para>
- De familie van <code>Zend_Config</code> klassen staat de organizatie van configuratiedata
- in secties toe. <code>Zend_Config</code> hulpklasse objecten kunnen een enkele
- gespecifieerde sectie, verschillende gespecifieerde secties of alle secties (indien er
- geen sectie werd gespecifieerd) inladen.
- </para>
- <para>
- <code>Zend_Config</code> hulpklassen ondersteunen een enkel ervingsmodel dat een
- configuratiedata sectie toelaat te erven van een andere sectie. Dit word gedaan om het
- verdubbelen van configuratiedata voor verchillende doeleinden te verminderen of te
- verwijderen. Een ervende sectie kan ook de overgeërfde waarden overschrijven. Net zoals
- PHP klasse erving kan een sectie van een oudersectie erven, die van een grootouder erft en
- zo verder, maar veelvoudige overerving (bv: sectie C erft onmiddellijk van oudersecties A
- en B) wordt niet ondersteund.
- </para>
- <para>
- Als je twee <code>Zend_Config</code> objecten hebt, kan je ze samenvoegen tot een enkel object
- door gebruik te maken van de <code>merge()</code> functie. Als voorbeeld, een gegeven
- <code>$config</code> en <code>$localConfig</code>, je kan de data van <code>$localConfig</code>
- samenvoegen met <code>$config</code> door gebruikt te maken van <code>$config->merge($localConfig);</code>.
- De elementen uit <code>$localConfig</code> zullen de elementen uit <code>$config</code> overschrijven,
- als ze dezelfde naam hebben.
- </para>
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|