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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185
|
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<reference xml:id="class.yaf-config-ini" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>The Yaf_Config_Ini class</title>
<titleabbrev>Yaf_Config_Ini</titleabbrev>
<partintro>
<!-- {{{ Yaf_Config_Ini intro -->
<section xml:id="yaf-config-ini.intro">
&reftitle.intro;
<para>
Yaf_Config_Ini enables developers to store configuration data in a
familiar INI format and read them in the application by using nested object
property syntax. The INI format is specialized to provide both the ability
to have a hierarchy of configuration data keys and inheritance between
configuration data sections. Configuration data hierarchies are supported
by separating the keys with the dot or period character ("."). A section
may extend or inherit from another section by following the section name
with a colon character (":") and the name of the section from which data are
to be inherited.
<note>
<para>
Yaf_Config_Ini utilizes the ยป parse_ini_file() PHP function. Please review
this documentation to be aware of its specific behaviors, which propagate
to Yaf_Config_Ini, such as how the special values of "&true;", "&false;",
"yes", "no", and "&null;" are handled.
</para>
</note>
</para>
</section>
<!-- }}} -->
<section xml:id="yaf-config-ini.synopsis">
&reftitle.classsynopsis;
<!-- {{{ Synopsis -->
<classsynopsis>
<ooclass><classname>Yaf_Config_Ini</classname></ooclass>
<!-- {{{ Class synopsis -->
<classsynopsisinfo>
<ooclass>
<classname>Yaf_Config_Ini</classname>
</ooclass>
<ooclass>
<modifier>extends</modifier>
<classname>Yaf_Config_Abstract</classname>
</ooclass>
<oointerface>
<interfacename>Iterator</interfacename>
</oointerface>
<oointerface>
<interfacename>ArrayAccess</interfacename>
</oointerface>
<oointerface>
<interfacename>Countable</interfacename>
</oointerface>
</classsynopsisinfo>
<!-- }}} -->
<classsynopsisinfo role="comment">&Properties;</classsynopsisinfo>
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.yaf-config-ini')/db:refentry/db:refsect1[@role='description']/descendant::db:constructorsynopsis[not(@role='procedural')])" />
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.yaf-config-ini')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[1])" />
<classsynopsisinfo role="comment">&InheritedMethods;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.yaf-config-abstract')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[1])" />
</classsynopsis>
<!-- }}} -->
</section>
<!-- {{{ Yaf_Config_Ini properties -->
<section xml:id="yaf-config-ini.props">
&reftitle.properties;
<variablelist>
<varlistentry xml:id="yaf-config-ini.props.config">
<term><varname>_config</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
<varlistentry xml:id="yaf-config-ini.props.readonly">
<term><varname>_readonly</varname></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
</variablelist>
</section>
<!-- }}} -->
<section role="examples">
&reftitle.examples;
<example>
<title><function>Yaf_Config_Ini</function>example</title>
<para>
This example illustrates a basic use of Yaf_Config_Ini for loading
configuration data from an INI file. In this example there are
configuration data for both a production system and for a staging system.
Because the staging system configuration data are very similar to those
for production, the staging section inherits from the production section.
In this case, the decision is arbitrary and could have been written
conversely, with the production section inheriting from the staging
section, though this may not be the case for more complex situations.
Suppose, then, that the following configuration data are contained in
/path/to/config.ini:
</para>
<programlisting role="ini">
<![CDATA[
; Production site configuration data
[production]
webhost = www.example.com
database.adapter = pdo_mysql
database.params.host = db.example.com
database.params.username = dbuser
database.params.password = secret
database.params.dbname = dbname
; Staging site configuration data inherits from production and
; overrides values as necessary
[staging : production]
database.params.host = dev.example.com
database.params.username = devuser
database.params.password = devsecret
]]>
</programlisting>
<programlisting role="php">
<![CDATA[
<?php
$config = new Yaf_Config_Ini('/path/to/config.ini', 'staging');
var_dump($config->database->params->host);
var_dump($config->database->params->dbname);
var_dump($config->get("database.params.username"));
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
string(15) "dev.example.com"
string(6) "dbname"
string(7) "devuser
]]>
</screen>
</example>
</section>
</partintro>
&reference.yaf.entities.yaf-config-ini;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
|