<?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 => 'yaf.appconfig.php',
    1 => 'Configuration de l\'application',
    2 => 'Configuration de l\'application',
  ),
  'up' => 
  array (
    0 => 'book.yaf.php',
    1 => 'Yaf',
  ),
  'prev' => 
  array (
    0 => 'yaf.tutorials.plugins.php',
    1 => 'Plugins',
  ),
  'next' => 
  array (
    0 => 'class.yaf-application.php',
    1 => 'Yaf_Application',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/yaf/appconfig.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="yaf.appconfig" class="chapter">
 <h1 class="title">Configuration de l&#039;application</h1>

 <p class="para">
  Il faut fournir un tableau de configuration ou le chemin d&#039;un fichier de
  configuration ini (voir <span class="classname"><a href="class.yaf-config-ini.php" class="classname">Yaf_Config_Ini</a></span>) à
  <span class="methodname"><a href="yaf-application.construct.php" class="methodname">Yaf_Application::__construct()</a></span>.
 </p>
 <p class="para">
  Yaf fusionne automatiquement les configurations de l&#039;application et celles
  de l&#039;utilisateur. Les configurations de l&#039;application ont le préfixe &quot;yaf.&quot;
  ou &quot;application.&quot;. Si &quot;yaf.&quot; et &quot;application.&quot; existent tous les deux,
  &quot;application.&quot; est retenu en priorité.
  <div class="example" id="example-1">
   <p><strong>Exemple #1 Un exemple de tableau PHP</strong></p>
   <div class="example-contents">
<div class="phpcode"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php

$configs </span><span style="color: #007700">= array(
    </span><span style="color: #DD0000">"application" </span><span style="color: #007700">=&gt; array(
        </span><span style="color: #DD0000">"directory" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">dirname</span><span style="color: #007700">(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">),
        </span><span style="color: #DD0000">"dispatcher" </span><span style="color: #007700">=&gt; array(
            </span><span style="color: #DD0000">"catchException" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">0</span><span style="color: #007700">,
        ),
        </span><span style="color: #DD0000">"view" </span><span style="color: #007700">=&gt; array(
            </span><span style="color: #DD0000">"ext" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"phtml"</span><span style="color: #007700">,
        ),
    ),
);

</span><span style="color: #0000BB">$app </span><span style="color: #007700">= new </span><span style="color: #0000BB">Yaf_Application</span><span style="color: #007700">(</span><span style="color: #0000BB">$configs</span><span style="color: #007700">);

</span><span style="color: #0000BB">?&gt;</span></code></pre></div>
   </div>

  </div>
  <div class="example" id="example-2">
   <p><strong>Exemple #2 Un exemple de fichier ini</strong></p>
   <div class="example-contents">
<div class="inicode"><pre class="inicode">[yaf]
yaf.directory = APPLICATION_PATH &quot;/application&quot;
yaf.dispatcher.catchException = 0

[product : yaf]
; la liste des configurations utilisateur ici</pre>
</div>
   </div>

  </div>
  <div class="tip"><strong class="tip">Astuce</strong>
   <p class="simpara">
    Lorsque la configuration devient volumineuse,
    <span class="classname"><a href="class.yaf-config-ini.php" class="classname">Yaf_Config_Ini</a></span>, qui analyse le fichier ini à chaque
    requête, représente un surcoût notable.
    <a href="https://pecl.php.net/package/yaconf" class="link external">&raquo;&nbsp;Yaconf</a> analyse tous les
    fichiers ini d&#039;un répertoire une seule fois au démarrage de PHP et
    conserve les valeurs analysées en mémoire partagée. Il faut définir
    <code class="literal">yaconf.directory</code> vers le dossier contenant la
    configuration, et passer le tableau retourné à
    <span class="methodname"><a href="yaf-application.construct.php" class="methodname">Yaf_Application::__construct()</a></span> :
   </p>
   <div class="example-contents">
<div class="phpcode"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php
</span><span style="color: #FF8000">// dans php.ini : yaconf.directory = /path/to/app/conf
</span><span style="color: #0000BB">$app </span><span style="color: #007700">= new </span><span style="color: #0000BB">Yaf_Application</span><span style="color: #007700">(</span><span style="color: #0000BB">Yaconf</span><span style="color: #007700">::</span><span style="color: #0000BB">get</span><span style="color: #007700">(</span><span style="color: #DD0000">"application"</span><span style="color: #007700">));
</span><span style="color: #0000BB">?&gt;</span></code></pre></div>
   </div>

   <p class="simpara">
    Un fichier contenant des en-têtes <code class="literal">[section]</code> est exposé
    sous la forme d&#039;une entrée par section (l&#039;héritage, par exemple
    <code class="literal">[product : yaf]</code>, étant déjà résolu). Il est possible de
    récupérer une seule section avec un point,
    <code class="literal">Yaconf::get(&quot;application.product&quot;)</code>, et de passer ce
    tableau à la place ; ses clés sont exactement les entrées fusionnées de
    cette section.
   </p>
  </div>
  </p>
  <p class="para">
  <table class="doctable table">
   <caption><strong>Configuration de l&#039;application Yaf</strong></caption>
   
    <thead>
     <tr>
      <th>Nom</th>
      <th>Défaut</th>
      <th>Historique</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>application.directory</td>
      <td class="empty">&nbsp;</td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td>application.ext</td>
      <td>&quot;php&quot;</td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td>application.view.ext</td>
      <td>&quot;phtml&quot;</td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td>application.modules</td>
      <td>&quot;index&quot;</td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td>application.library</td>
      <td>application.directory . &quot;/library&quot;</td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td>application.library.directory</td>
      <td>application.directory . &quot;/library&quot;</td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td>application.library.namespace</td>
      <td>&quot;&quot;</td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td>application.bootstrap</td>
      <td>application.directory . &quot;/Bootstrap&quot; . application.ext</td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td>application.baseUri</td>
      <td>&quot;&quot;</td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td>application.dispatcher.defaultRoute</td>
      <td class="empty">&nbsp;</td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td>application.dispatcher.throwException</td>
      <td>1</td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td>application.dispatcher.catchException</td>
      <td>0</td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td>application.dispatcher.defaultModule</td>
      <td>&quot;index&quot;</td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td>application.dispatcher.defaultController</td>
      <td>&quot;index&quot;</td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td>application.dispatcher.defaultAction</td>
      <td>&quot;index&quot;</td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td>application.system</td>
      <td class="empty">&nbsp;</td>
      <td class="empty">&nbsp;</td>
     </tr>

    </tbody>
   
  </table>

 </p>

 <p class="simpara">Voici un éclaircissement sur
l&#039;utilisation des directives de configuration.</p>

 <p class="para">
  <dl>
   
     <dt id="configuration.yaf.directory">
      <code class="parameter">application.directory</code>
      <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
     </dt>
     <dd>
      <p class="para">
       Le répertoire de l&#039;application, c&#039;est-à-dire le dossier qui contient
       les dossiers &quot;controllers&quot;, &quot;views&quot;, &quot;models&quot; et &quot;plugins&quot;.
      </p>
      <p class="para">
       <blockquote class="note"><p><strong class="note">Note</strong>: 
        <p class="simpara">
            Cette entrée de configuration est la seule qui n&#039;a pas de valeur
            par défaut. Il faut toujours la définir manuellement.
        </p>
       </p></blockquote>
      </p>
     </dd>
    
    
     <dt id="configuration.yaf.ext">
      <code class="parameter">application.ext</code>
      <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
     </dt>
     <dd>
      <p class="para">
       L&#039;extension de fichier des scripts PHP, utilisée lors du chargement
       automatique des classes (<span class="classname"><a href="class.yaf-loader.php" class="classname">Yaf_Loader</a></span>).
      </p>
     </dd>
    
    
     <dt id="configuration.yaf.view.ext">
      <code class="parameter">application.view.ext</code>
      <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
     </dt>
     <dd>
      <p class="para">
       L&#039;extension de fichier des scripts de gabarit de vue.
      </p>
     </dd>
    
    
     <dt id="configuration.yaf.modules">
      <code class="parameter">application.modules</code>
      <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
     </dt>
     <dd>
      <p class="para">
       Une liste, séparée par des virgules, des modules enregistrés, utilisée
       lors du processus de routage, en particulier lorsqu&#039;il y a plus de
       trois segments dans le PATH_INFO,
      </p>
      <p class="para">
       Yaf a besoin d&#039;un moyen de déterminer si le premier segment est un nom
       de module ou non.
      </p>
     </dd>
    
    
     <dt id="configuration.yaf.library">
      <code class="parameter">application.library</code>
      <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
     </dt>
     <dd>
      <p class="para">
       Le répertoire de la bibliothèque locale, voir
       <span class="classname"><a href="class.yaf-loader.php" class="classname">Yaf_Loader</a></span> et
       <a href="yaf.configuration.php#ini.yaf.library" class="link">yaf.library</a>.
       </p>
       <blockquote class="note"><p><strong class="note">Note</strong>: 
        <p class="simpara">
            À partir de Yaf 2.1.6, cette entrée de configuration peut être un
            tableau. Le chemin de la bibliothèque essaiera d&#039;utiliser les
            éléments définis dans <a href="yaf.appconfig.php#configuration.yaf.library.directory" class="link">application.library.directory</a>
        </p>
       </p></blockquote>
     </dd>
    
    
     <dt id="configuration.yaf.library.directory">
      <code class="parameter">application.library.directory</code>
      <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
     </dt>
     <dd>
      <p class="para">
       Alias de <a href="yaf.appconfig.php#configuration.yaf.library" class="link">application.library</a>.
       Introduit en Yaf 2.1.6
      </p>
     </dd>
    
    
     <dt id="configuration.yaf.library.namespace">
      <code class="parameter">application.library.namespace</code>
      <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
     </dt>
     <dd>
      <p class="para">
       Un préfixe, séparé par des virgules, du namespace de la bibliothèque
       locale.
      </p>
      <p class="para">
       Introduit en Yaf 2.1.6
      </p>
     </dd>
    
    
     <dt id="configuration.yaf.bootstrap">
      <code class="parameter">application.bootstrap</code>
      <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
     </dt>
     <dd>
      <p class="para">
       Un chemin absolu vers le script de la classe Bootstrap.
      </p>
     </dd>
    
    
     <dt id="configuration.yaf.baseuri">
      <code class="parameter">application.baseUri</code>
      <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
     </dt>
     <dd>
      <p class="para">
       Utilisé pour retirer un préfixe fixe de l&#039;URI de requête lors du
       processus de routage. Par exemple, si arrive une requête dont l&#039;URI est
       &quot;/prefix/controller/action&quot;, et que application.baseUri est définie à
       &quot;/prefix&quot;, alors seul &quot;/controller/action&quot; sera pris comme PATH_INFO
       lors du processus de routage.
      </p>
      <p class="para">
       En général, il n&#039;est pas nécessaire de définir cette valeur.
      </p>
     </dd>
    
    
     <dt id="configuration.yaf.dispatcher.throwexception">
      <code class="parameter">application.dispatcher.throwException</code>
      <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
     </dt>
     <dd>
      <p class="para">
        Si elle est définie à On, Yaf lancera une exception lorsqu&#039;une erreur
        se produit. Voir aussi
        <span class="methodname"><a href="yaf-dispatcher.throwexception.php" class="methodname">Yaf_Dispatcher::throwException()</a></span>.
      </p>
     </dd>
    
    
     <dt id="configuration.yaf.dispatcher.catchexception">
      <code class="parameter">application.dispatcher.catchException</code>
      <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
     </dt>
     <dd>
      <p class="para">
       Si elle est définie à On, Yaf redirigera vers le contrôleur/l&#039;action
       Error lorsqu&#039;il y a une exception non gérée. Voir aussi
       <span class="methodname"><a href="yaf-dispatcher.catchexception.php" class="methodname">Yaf_Dispatcher::catchException()</a></span>.
      </p>
     </dd>
    
    
     <dt id="configuration.yaf.dispatcher.defaulRoute">
      <code class="parameter">application.dispatcher.defaultRoute</code>
      <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
     </dt>
     <dd>
      <p class="para">
       La route par défaut ; si elle n&#039;est pas spécifiée, la route Static sera
       utilisée par défaut. Voir :
       <span class="methodname"><a href="yaf-router.addroute.php" class="methodname">Yaf_Router::addRoute()</a></span>.
      </p>
     </dd>
    
    
     <dt id="configuration.yaf.dispatcher.defaultmodule">
      <code class="parameter">application.dispatcher.defaultModule</code>
      <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
     </dt>
     <dd>
      <p class="para">
       Le nom du module par défaut, voir aussi
       <span class="methodname"><a href="yaf-dispatcher.setdefaultmodule.php" class="methodname">Yaf_Dispatcher::setDefaultModule()</a></span>.
      </p>
     </dd>
    
    
     <dt id="configuration.yaf.dispatcher.defaultcontroller">
      <code class="parameter">application.dispatcher.defaultController</code>
      <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
     </dt>
     <dd>
      <p class="para">
       Le nom du contrôleur par défaut, voir aussi
       <span class="methodname"><a href="yaf-dispatcher.setdefaultcontroller.php" class="methodname">Yaf_Dispatcher::setDefaultController()</a></span>.
      </p>
     </dd>
    
    
     <dt id="configuration.yaf.dispatcher.defaultaction">
      <code class="parameter">application.dispatcher.defaultAction</code>
      <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
     </dt>
     <dd>
      <p class="para">
       Le nom de l&#039;action par défaut, voir aussi
       <span class="methodname"><a href="yaf-dispatcher.setdefaultaction.php" class="methodname">Yaf_Dispatcher::setDefaultAction()</a></span>.
      </p>
     </dd>
    

    
     <dt id="configuration.yaf.system">
      <code class="parameter">application.system</code>
      <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
     </dt>
     <dd>
      <p class="para">
       Définit la configuration d&#039;exécution de Yaf dans application.ini,
       comme :
       <a href="yaf.configuration.php#ini.yaf.lowcase-path" class="link">application.system.lowcase_path</a>
       <blockquote class="note"><p><strong class="note">Note</strong>: 
        <p class="simpara">
        seules les configurations <strong><code><a href="info.constants.php#constant.ini-all">INI_ALL</a></code></strong> peuvent être
        définies de cette manière
       </p>
       </p></blockquote>
      </p>
     </dd>
    

  </dl>
 </p>
</div>
<?php manual_footer($setup); ?>