<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/book.yaf.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'class.yaf-config-ini.php',
    1 => 'Yaf_Config_Ini',
    2 => 'La classe Yaf_Config_Ini',
  ),
  'up' => 
  array (
    0 => 'book.yaf.php',
    1 => 'Yaf',
  ),
  'prev' => 
  array (
    0 => 'yaf-config-abstract.toarray.php',
    1 => 'Yaf_Config_Abstract::toArray',
  ),
  'next' => 
  array (
    0 => 'yaf-config-ini.construct.php',
    1 => 'Yaf_Config_Ini::__construct',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/yaf/yaf-config-ini.xml',
  ),
  'history' => 
  array (
  ),
  'extra_header_links' => 
  array (
    'rel' => 'alternate',
    'href' => '/manual/en/feeds/class.yaf-config-ini.atom',
    'type' => 'application/atom+xml',
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="class.yaf-config-ini" class="reference">

 <h1 class="title">La classe Yaf_Config_Ini</h1>
 

 <div class="partintro"><p class="verinfo">(Yaf &gt;=1.0.0)</p>


  <div class="section" id="yaf-config-ini.intro">
   <h2 class="title">Introduction</h2>
   <p class="simpara">
    <span class="classname"><strong class="classname">Yaf_Config_Ini</strong></span> permet aux développeurs de stocker
    des données de configuration dans le format INI familier et de les lire
    dans l&#039;application en utilisant une syntaxe de propriétés d&#039;objets
    imbriquées. Le format INI est prévu pour fournir à la fois la
    possibilité d&#039;avoir une hiérarchie de clés de données de configuration
    et un héritage entre les sections de données de configuration. La
    hiérarchie des données de configuration est prise en charge en séparant
    les clés par le caractère point (&quot;<code class="literal">.</code>&quot;). Une section
    peut étendre une autre section, ou en hériter, en faisant suivre le nom
    de la section par le caractère deux-points (&quot;<code class="literal">:</code>&quot;) puis
    par le nom de la section dont les données doivent être héritées.
   </p>
   <blockquote class="note"><p><strong class="note">Note</strong>: 
    <p class="simpara">
     <span class="classname"><strong class="classname">Yaf_Config_Ini</strong></span> utilise la fonction PHP
     <span class="function"><a href="function.parse-ini-file.php" class="function">parse_ini_file()</a></span>. Il faut consulter cette
     documentation pour connaître ses comportements spécifiques, qui se
     propagent à <span class="classname"><strong class="classname">Yaf_Config_Ini</strong></span>, comme la façon dont
     sont gérées les valeurs spéciales &quot;<strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>&quot;, &quot;<strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>&quot;, &quot;yes&quot;, &quot;no&quot; et
     &quot;<strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>&quot;.
    </p>
   </p></blockquote>
   <div class="tip"><strong class="tip">Astuce</strong>
    <p class="simpara">
     <span class="classname"><strong class="classname">Yaf_Config_Ini</strong></span> analyse le fichier de
     configuration à chaque requête. Si une application gère une grande
     quantité de configuration (essentiellement statique), il est préférable
     d&#039;envisager l&#039;extension <a href="book.yaconf.php" class="link">Yaconf</a> : elle
     conserve la configuration en mémoire partagée pendant tout le cycle de
     vie de PHP, de sorte qu&#039;elle n&#039;est analysée qu&#039;une seule fois et qu&#039;elle
     est accessible bien plus efficacement. Yaconf comprend exactement la
     même syntaxe INI — des clés séparées par des points et un héritage entre
     sections grâce à &quot;<code class="literal">[section : parent]</code>&quot; — si bien que
     le fichier <var class="filename">application.ini</var> existant peut être servi
     tel quel par Yaconf ; seule la façon dont il est passé à
     <span class="methodname"><a href="yaf-application.construct.php" class="methodname">Yaf_Application::__construct()</a></span> change (voir
     l&#039;astuce dans <a href="yaf.appconfig.php" class="link">Configuration de
     l&#039;application</a>).
    </p>
   </div>
  </div>


  <div class="section" id="yaf-config-ini.synopsis">
   <h2 class="title">Synopsis de la classe</h2>


   <div class="classsynopsis">
    <span class="ooclass"><strong class="classname"></strong></span>


    <div class="classsynopsisinfo">
     <span class="ooclass">
      <span class="modifier">class</span> <strong class="classname">Yaf_Config_Ini</strong>
     </span>

     <span class="ooclass">
      <span class="modifier">extends</span>
       <a href="class.yaf-config-abstract.php" class="classname">Yaf_Config_Abstract</a>
     </span>

     <span class="oointerface"><span class="modifier">implements</span> 
       <a href="class.iterator.php" class="interfacename">Iterator</a></span><span class="oointerface">,  <a href="class.arrayaccess.php" class="interfacename">ArrayAccess</a></span><span class="oointerface">,  <a href="class.countable.php" class="interfacename">Countable</a></span> {</div>

    <div class="classsynopsisinfo classsynopsisinfo_comment">/* Propriétés */</div>


    <div class="classsynopsisinfo classsynopsisinfo_comment">/* Méthodes */</div>
    <div class="constructorsynopsis dc-description">
   <span class="modifier">public</span><span class="modifier">function</span> <span class="methodname"><a href="yaf-config-ini.construct.php" class="methodname">__construct</a></span>(<span class="methodparam"><span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span> <code class="parameter">$config_file</code></span>, <span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$section</code><span class="initializer"> = NULL</span></span>)</div>

    <div class="methodsynopsis dc-description"><span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><a href="yaf-config-ini.count.php" class="methodname">count</a></span>(): <span class="type"><a href="language.types.integer.php" class="type int">int</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><a href="yaf-config-ini.current.php" class="methodname">current</a></span>(): <span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><a href="yaf-config-ini.get.php" class="methodname">get</a></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$name</code><span class="initializer"> = NULL</span></span>): <span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><a href="yaf-config-ini.isset.php" class="methodname">__isset</a></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$name</code></span>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><a href="yaf-config-ini.key.php" class="methodname">key</a></span>(): <span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><a href="yaf-config-ini.next.php" class="methodname">next</a></span>(): <span class="type"><a href="language.types.void.php" class="type void">void</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><a href="yaf-config-ini.offsetexists.php" class="methodname">offsetExists</a></span>(<span class="methodparam"><span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span> <code class="parameter">$name</code></span>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><a href="yaf-config-ini.offsetget.php" class="methodname">offsetGet</a></span>(<span class="methodparam"><span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span> <code class="parameter">$name</code></span>): <span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><a href="yaf-config-ini.offsetset.php" class="methodname">offsetSet</a></span>(<span class="methodparam"><span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span> <code class="parameter">$name</code></span>, <span class="methodparam"><span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span> <code class="parameter">$value</code></span>): <span class="type"><a href="language.types.void.php" class="type void">void</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><a href="yaf-config-ini.offsetunset.php" class="methodname">offsetUnset</a></span>(<span class="methodparam"><span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span> <code class="parameter">$name</code></span>): <span class="type"><a href="language.types.void.php" class="type void">void</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><a href="yaf-config-ini.readonly.php" class="methodname">readonly</a></span>(): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><a href="yaf-config-ini.rewind.php" class="methodname">rewind</a></span>(): <span class="type"><a href="language.types.void.php" class="type void">void</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><a href="yaf-config-ini.set.php" class="methodname">set</a></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$name</code></span>, <span class="methodparam"><span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span> <code class="parameter">$value</code></span>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><a href="yaf-config-ini.toarray.php" class="methodname">toArray</a></span>(): <span class="type"><a href="language.types.array.php" class="type array">array</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><a href="yaf-config-ini.valid.php" class="methodname">valid</a></span>(): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>


    <div class="classsynopsisinfo classsynopsisinfo_comment">/* Méthodes héritées */</div>
    <div class="methodsynopsis dc-description"><span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><a href="yaf-config-abstract.get.php" class="methodname">Yaf_Config_Abstract::get</a></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$name</code><span class="initializer"> = NULL</span></span>): <span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">abstract</span> <span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><a href="yaf-config-abstract.readonly.php" class="methodname">Yaf_Config_Abstract::readonly</a></span>(): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">abstract</span> <span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><a href="yaf-config-abstract.set.php" class="methodname">Yaf_Config_Abstract::set</a></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$name</code></span>, <span class="methodparam"><span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span> <code class="parameter">$value</code></span>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><a href="yaf-config-abstract.toarray.php" class="methodname">Yaf_Config_Abstract::toArray</a></span>(): <span class="type"><a href="language.types.array.php" class="type array">array</a></span></div>


   }</div>


  </div>



  <div class="section" id="yaf-config-ini.props">
   <h2 class="title">Propriétés</h2>
   <dl>
    
     <dt id="yaf-config-ini.props.config"><var class="varname">_config</var></dt>
     <dd>
      <p class="para"/>
     </dd>
    
    
     <dt id="yaf-config-ini.props.readonly"><var class="varname">_readonly</var></dt>
     <dd>
      <p class="para"/>
     </dd>
    
   </dl>
  </div>


 <div class="section">
  <h2 class="title">Exemples</h2>
  <div class="example" id="example-1">
   <p><strong>Exemple #1 Exemple avec <span class="function"><strong>Yaf_Config_Ini()</strong></span></strong></p>
   <div class="example-contents"><p>
    Cet exemple illustre une utilisation basique de Yaf_Config_Ini pour
    charger des données de configuration depuis un fichier INI. Dans cet
    exemple, il y a des données de configuration à la fois pour un système
    de production et pour un système de pré-production. Comme les données de
    configuration du système de pré-production sont très similaires à celles
    de production, la section de pré-production hérite de la section de
    production. Dans ce cas, la décision est arbitraire et aurait pu être
    écrite dans l&#039;autre sens, avec la section de production héritant de la
    section de pré-production, mais ce n&#039;est pas forcément le cas pour des
    situations plus complexes. Supposons alors que les données de
    configuration suivantes soient contenues dans /path/to/config.ini :
   </p></div>
   <div class="example-contents">
<div class="inicode"><pre class="inicode">; Données de configuration du site de production
[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
 
; Les données de configuration du site de pré-production héritent de celles
; de production et écrasent les valeurs si nécessaire
[staging : production]
database.params.host     = dev.example.com
database.params.username = devuser
database.params.password = devsecret</pre>
</div>
   </div>

   <div class="example-contents">
<div class="phpcode"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php
$config </span><span style="color: #007700">= new </span><span style="color: #0000BB">Yaf_Config_Ini</span><span style="color: #007700">(</span><span style="color: #DD0000">'/path/to/config.ini'</span><span style="color: #007700">, </span><span style="color: #DD0000">'staging'</span><span style="color: #007700">);
 
</span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$config</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">database</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">params</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">host</span><span style="color: #007700">); 
</span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$config</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">database</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">params</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">dbname</span><span style="color: #007700">);
</span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$config</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get</span><span style="color: #007700">(</span><span style="color: #DD0000">"database.params.username"</span><span style="color: #007700">));
</span><span style="color: #0000BB">?&gt;</span></code></pre></div>
   </div>

   <div class="example-contents"><p>Résultat de l&#039;exemple ci-dessus est similaire à :</p></div>
   <div class="example-contents screen">
<div class="cdata"><pre>
string(15) &quot;dev.example.com&quot;
string(6) &quot;dbname&quot;
string(7) &quot;devuser&quot;
</pre></div>
   </div>
  </div>
  </div>

 </div>

 
















































































































<h2>Sommaire</h2><ul class="chunklist chunklist_reference"><li><a href="yaf-config-ini.construct.php">Yaf_Config_Ini::__construct</a> — Constructeur de Yaf_Config_Ini</li><li><a href="yaf-config-ini.count.php">Yaf_Config_Ini::count</a> — Compte les entr&eacute;es de configuration</li><li><a href="yaf-config-ini.current.php">Yaf_Config_Ini::current</a> — R&eacute;cup&egrave;re la valeur de l'entr&eacute;e courante</li><li><a href="yaf-config-ini.get.php">Yaf_Config_Ini::get</a> — R&eacute;cup&egrave;re une valeur de configuration</li><li><a href="yaf-config-ini.isset.php">Yaf_Config_Ini::__isset</a> — V&eacute;rifie si une cl&eacute; existe</li><li><a href="yaf-config-ini.key.php">Yaf_Config_Ini::key</a> — R&eacute;cup&egrave;re la cl&eacute; de l'entr&eacute;e courante</li><li><a href="yaf-config-ini.next.php">Yaf_Config_Ini::next</a> — Avance &agrave; l'entr&eacute;e suivante</li><li><a href="yaf-config-ini.offsetexists.php">Yaf_Config_Ini::offsetExists</a> — V&eacute;rifie si une cl&eacute; existe (ArrayAccess)</li><li><a href="yaf-config-ini.offsetget.php">Yaf_Config_Ini::offsetGet</a> — R&eacute;cup&egrave;re une valeur (ArrayAccess)</li><li><a href="yaf-config-ini.offsetset.php">Yaf_Config_Ini::offsetSet</a> — D&eacute;finit une valeur de configuration (ArrayAccess)</li><li><a href="yaf-config-ini.offsetunset.php">Yaf_Config_Ini::offsetUnset</a> — Supprime une cl&eacute; (ArrayAccess)</li><li><a href="yaf-config-ini.readonly.php">Yaf_Config_Ini::readonly</a> — V&eacute;rifie si la configuration est en lecture seule</li><li><a href="yaf-config-ini.rewind.php">Yaf_Config_Ini::rewind</a> — Replace l'it&eacute;rateur sur la premi&egrave;re entr&eacute;e</li><li><a href="yaf-config-ini.set.php">Yaf_Config_Ini::set</a> — D&eacute;finit une valeur de configuration</li><li><a href="yaf-config-ini.toarray.php">Yaf_Config_Ini::toArray</a> — Exporte la configuration sous forme de tableau</li><li><a href="yaf-config-ini.valid.php">Yaf_Config_Ini::valid</a> — V&eacute;rifie si la position courante est valide</li></ul>
</div>
<?php manual_footer($setup); ?>