Zend_Config-TheoryOfOperation.xml 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <sect1 id="zend.config.theory_of_operation">
  2. <title>Werkingstheorie</title>
  3. <para>
  4. Configuratiedata wordt toegankelijk gemaakt voor de <code>Zend_Config</code> constructor
  5. via een associatieve array, welke multidimensioneel kan zijn, om het organizeren van de
  6. data van alemeen naar specifiek te ondersteunen. Er bestaan concrete functies van
  7. de hulpklassen om de configuratiedata aan te passen vanuit het bestand om een associatieve
  8. array voor de constructor van <code>Zend_Config</code> aan te maken. Gebruikerscripts
  9. kunnen deze arrays direct doorgeven aan de constructor van <code>Zend_Config</code>,
  10. zonder een hulpklasse te gebruiken. Dit kan toepasselijk zijn in sommige situaties.
  11. </para>
  12. <para>
  13. Elke configuratie data array waarde wordt een eigenschap van het <code>Zend_Config</code> object.
  14. De key wordt gebruikt als de naam van de eigenschap. Als de waarde zelf een array is, dan zal hiervoor
  15. een nieuw <code>Zend_Config</code> object worden gemaakt, waarin de array data geladen wordt. Dit gebeurt
  16. recursief, zodat er een hiërarchie van configuratie data gemaakt kan worden van elke hoeveelheid niveaus.
  17. </para>
  18. <para>
  19. <code>Zend_Config</code> implementeert de <code>Countable</code> en <code>Iterator</code>
  20. interfaces om eenvoudige toegang tot de configuratiedata te vergemakkelijken. Je kan dus
  21. de <ulink url="http://php.net/count"><code>count()</code></ulink> functie en PHP
  22. constructies zoals <ulink url="http://php.net/foreach"><code>foreach</code></ulink>
  23. gebruiken op <code>Zend_Config</code> objecten.
  24. </para>
  25. <para>
  26. Standaard is de configuratiedata die beschikbaar wordt gemaakt via <code>Zend_Config</code>
  27. alleen lezen, en het toewijzen van een waarde
  28. (bv: <code><![CDATA[$config->database->host = 'example.com']]></code>) resulteert in het
  29. opwerpen van een uitzondering. Deze standaardeigenschap kan worden gewijzigd via de
  30. constructor om het wijzigen van waarden toe te staan. Ook, wanneer wijzigingen zijn toegstaan,
  31. ondersteunt <code>Zend_Config</code> het verwijderen van waardes
  32. (i.e. <code><![CDATA[unset($config->database->host);]]></code>).
  33. </para>
  34. <note>
  35. <para>
  36. Het is belangrijk zulke in-memory wijzigingen niet te verwarren met het opslaan van
  37. configuratiedata in een specifieke opslagmedia. Programma's voor het aanmaken en wijzigen
  38. van configuratiedata voor de verschillende opslagmedia worden hier niet besproken, want ze
  39. vallen buiten het bereik van <code>Zend_Config</code>. Open source toepassingen van derden zijn
  40. beschikbaar voor het aanmaken en wijzigen van configuratiedata voor verschillende
  41. opslagmedia.
  42. </para>
  43. </note>
  44. <para>
  45. Hulpklassen erven van de <code>Zend_Config</code> klasse want ze gebruiken haar
  46. functionaliteiten.
  47. </para>
  48. <para>
  49. De familie van <code>Zend_Config</code> klassen staat de organizatie van configuratiedata
  50. in secties toe. <code>Zend_Config</code> hulpklasse objecten kunnen een enkele
  51. gespecifieerde sectie, verschillende gespecifieerde secties of alle secties (indien er
  52. geen sectie werd gespecifieerd) inladen.
  53. </para>
  54. <para>
  55. <code>Zend_Config</code> hulpklassen ondersteunen een enkel ervingsmodel dat een
  56. configuratiedata sectie toelaat te erven van een andere sectie. Dit word gedaan om het
  57. verdubbelen van configuratiedata voor verchillende doeleinden te verminderen of te
  58. verwijderen. Een ervende sectie kan ook de overgeërfde waarden overschrijven. Net zoals
  59. PHP klasse erving kan een sectie van een oudersectie erven, die van een grootouder erft en
  60. zo verder, maar veelvoudige overerving (bv: sectie C erft onmiddellijk van oudersecties A
  61. en B) wordt niet ondersteund.
  62. </para>
  63. <para>
  64. Als je twee <code>Zend_Config</code> objecten hebt, kan je ze samenvoegen tot een enkel object
  65. door gebruik te maken van de <code>merge()</code> functie. Als voorbeeld, een gegeven
  66. <code>$config</code> en <code>$localConfig</code>, je kan de data van <code>$localConfig</code>
  67. samenvoegen met <code>$config</code> door gebruikt te maken van <code>$config->merge($localConfig);</code>.
  68. De elementen uit <code>$localConfig</code> zullen de elementen uit <code>$config</code> overschrijven,
  69. als ze dezelfde naam hebben.
  70. </para>
  71. </sect1>
  72. <!--
  73. vim:se ts=4 sw=4 et:
  74. -->