<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/yaf.setup.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'zh',
  ),
  'this' => 
  array (
    0 => 'yaf.configuration.php',
    1 => '运行时配置',
    2 => '运行时配置',
  ),
  'up' => 
  array (
    0 => 'yaf.setup.php',
    1 => '安装/配置',
  ),
  'prev' => 
  array (
    0 => 'yaf.installation.php',
    1 => '安装',
  ),
  'next' => 
  array (
    0 => 'yaf.constants.php',
    1 => '预定义常量',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'zh',
    'path' => 'reference/yaf/ini.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="yaf.configuration" class="section">
 <h2 class="title">运行时配置</h2>
 <p class="simpara">
这些函数的行为受 <var class="filename">php.ini</var> 中的设置影响。
</p>
 <p class="para">
  <table class="doctable table">
   <caption><strong>Yaf 配置选项</strong></caption>
   
    <thead>
     <tr>
      <th>名字</th>
      <th>默认</th>
      <th>可修改范围</th>
      <th>更新日志</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td><a href="yaf.configuration.php#ini.yaf.library" class="link">yaf.library</a></td>
      <td>&quot;&quot;</td>
      <td><strong><code><a href="info.constants.php#constant.ini-all">INI_ALL</a></code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="yaf.configuration.php#ini.yaf.environ" class="link">yaf.environ</a></td>
      <td>&quot;product&quot;</td>
      <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="yaf.configuration.php#ini.yaf.forward-limit" class="link">yaf.forward_limit</a></td>
      <td>5</td>
      <td><strong><code><a href="info.constants.php#constant.ini-all">INI_ALL</a></code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="yaf.configuration.php#ini.yaf.use-namespace" class="link">yaf.use_namespace</a></td>
      <td>0</td>
      <td><strong><code><a href="info.constants.php#constant.ini-all">INI_ALL</a></code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="yaf.configuration.php#ini.yaf.action-prefer" class="link">yaf.action_prefer</a></td>
      <td>0</td>
      <td><strong><code><a href="info.constants.php#constant.ini-all">INI_ALL</a></code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="yaf.configuration.php#ini.yaf.lowcase-path" class="link">yaf.lowcase_path</a></td>
      <td>0</td>
      <td><strong><code><a href="info.constants.php#constant.ini-all">INI_ALL</a></code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="yaf.configuration.php#ini.yaf.use-spl-autoload" class="link">yaf.use_spl_autoload</a></td>
      <td>0</td>
      <td><strong><code><a href="info.constants.php#constant.ini-all">INI_ALL</a></code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="yaf.configuration.php#ini.yaf.name-suffix" class="link">yaf.name_suffix</a></td>
      <td>1</td>
      <td><strong><code><a href="info.constants.php#constant.ini-all">INI_ALL</a></code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="yaf.configuration.php#ini.yaf.name-separator" class="link">yaf.name_separator</a></td>
      <td>&quot;&quot;</td>
      <td><strong><code><a href="info.constants.php#constant.ini-all">INI_ALL</a></code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

    </tbody>
   
  </table>

 </p>

 <p class="simpara">这是配置指令的简短说明。</p>

 <p class="para">
  <blockquote class="note"><p><strong class="note">注意</strong>: 
   <p class="simpara">
    <code class="literal">yaf.cache_config</code> 指令曾存在于 Yaf 2.x 中，
    用于在 PHP 进程内缓存 INI 配置文件的解析结果。它在 Yaf 3.0.0 中
    已被移除，不再被识别。
   </p>
  </p></blockquote>
 </p>

 <p class="para">
  <dl>
   
     <dt id="ini.yaf.library">
      <code class="parameter">yaf.library</code>
     </dt>
     <dd>
      <p class="simpara">
       全局库目录。<span class="classname"><a href="class.yaf-loader.php" class="classname">Yaf_Loader</a></span>
       会在此目录下搜索应用的本地库中找不到的类（参见
       <a href="yaf.appconfig.php#configuration.yaf.library" class="link">application.library</a>）。
      </p>
      <p class="simpara">
       另请参见 <span class="methodname"><a href="yaf-loader.getlibrarypath.php" class="methodname">Yaf_Loader::getLibraryPath()</a></span> 和
       <span class="methodname"><a href="yaf-loader.setlibrarypath.php" class="methodname">Yaf_Loader::setLibraryPath()</a></span>。
      </p>
     </dd>
    
    
     <dt id="ini.yaf.environ">
      <code class="parameter">yaf.environ</code>
      <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
     </dt>
     <dd>
      <p class="simpara">
       环境名称，默认为 <code class="literal">&quot;product&quot;</code>。它被
       <span class="classname"><a href="class.yaf-application.php" class="classname">Yaf_Application</a></span> 用来选择 INI 配置文件
       （其第一个构造参数）中作为应用配置的分节。
      </p>
      <p class="simpara">
       例如，如果此值为 <code class="literal">&quot;product&quot;</code>，Yaf 将使用 INI
       配置文件中名为 <code class="literal">[product]</code> 的分节，作为
       <span class="classname"><a href="class.yaf-application.php" class="classname">Yaf_Application</a></span> 的最终配置。
       也可以通过给 <span class="methodname"><a href="yaf-application.construct.php" class="methodname">Yaf_Application::__construct()</a></span>
       传递第二个构造参数，为每个应用单独覆盖环境名称。
      </p>
     </dd>
    
    
     <dt id="ini.yaf.forward-limit">
      <code class="parameter">yaf.forward_limit</code>
      <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
     </dt>
     <dd>
      <p class="simpara">
       <span class="methodname"><a href="yaf-controller-abstract.forward.php" class="methodname">Yaf_Controller_Abstract::forward()</a></span> 在单次请求中
       最多可以链式调用的次数，默认为 <code class="literal">5</code>。
      </p>
      <p class="simpara">
       这是防止 <span class="methodname"><a href="yaf-controller-abstract.forward.php" class="methodname">Yaf_Controller_Abstract::forward()</a></span>
       递归循环的保护；超出限制时将抛出
       <span class="classname"><a href="class.yaf-exception-dispatchfailed.php" class="classname">Yaf_Exception_DispatchFailed</a></span>。
       非正数值会被强制取默认值。
      </p>
     </dd>
    
    
     <dt id="ini.yaf.use-namespace">
      <code class="parameter">yaf.use_namespace</code>
      <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
     </dt>
     <dd>
      <p class="simpara">
       启用后，Yaf 声明的所有类都将以命名空间风格命名：
      </p>
      <div class="example-contents screen">
<div class="cdata"><pre>
Yaf_Route_Rewrite =&gt; \Yaf\Route\Rewrite
Yaf_Request_Http  =&gt; \Yaf\Request\Http
</pre></div>
      </div>
      <p class="simpara">
       有一个例外：最后一段是 PHP 保留关键字的类不能用作类名；
       这类类的最后一段保留下划线：
      </p>
      <div class="example-contents screen">
<div class="cdata"><pre>
Yaf_Controller_Abstract =&gt; \Yaf\Controller_Abstract
Yaf_Route_Static        =&gt; \Yaf\Route_Static
</pre></div>
      </div>
      <blockquote class="note"><p><strong class="note">注意</strong>: 
       <p class="simpara">
        扩展启动时只注册两种命名风格中的一种，
        因此此指令必须在扩展加载之前设置；
        它无法在每个请求之间有意义地切换。
       </p>
      </p></blockquote>
     </dd>
    
    
     <dt id="ini.yaf.action-prefer">
      <code class="parameter">yaf.action_prefer</code>
      <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
     </dt>
     <dd>
      <p class="simpara">
       当 <code class="literal">PATH_INFO</code> 中只有一部分时，
       决定应将其视为控制器名还是动作名。
      </p>
      <p class="simpara">
       如果此配置为开启，单个路径段被视为动作名，
       控制器名回退到默认控制器；否则将其视为控制器名。
      </p>
     </dd>
    
    
     <dt id="ini.yaf.lowcase-path">
      <code class="parameter">yaf.lowcase_path</code>
      <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
     </dt>
     <dd>
      <p class="simpara">
       是否在类自动加载期间将所有路径组件转换为小写。
      </p>
     </dd>
    
    
     <dt id="ini.yaf.use-spl-autoload">
      <code class="parameter">yaf.use_spl_autoload</code>
      <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
     </dt>
     <dd>
      <p class="simpara">
       当此值开启时，如果 <span class="classname"><a href="class.yaf-loader.php" class="classname">Yaf_Loader</a></span> 找不到一个类，
       它将返回 <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>，从而给其他自动加载函数一个被调用的机会。
      </p>
      <p class="simpara">
       当此值关闭（默认）时，如果
       <span class="classname"><a href="class.yaf-loader.php" class="classname">Yaf_Loader</a></span> 找不到一个类，它将返回 <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>，
       类的自动加载会立即失败：在这种模式下
       <span class="methodname"><a href="yaf-loader.autoload.php" class="methodname">Yaf_Loader::autoload()</a></span> 总是返回 <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>。
      </p>
      <blockquote class="note"><p><strong class="note">注意</strong>: 
       <p class="simpara">
        Yaf 在 <span class="classname"><a href="class.yaf-application.php" class="classname">Yaf_Application</a></span> 实例化期间注册它的加载器，
        因此在实例化之前注册的任何其他自动加载器都会先于
        <span class="methodname"><a href="yaf-loader.autoload.php" class="methodname">Yaf_Loader::autoload()</a></span> 被调用。
       </p>
      </p></blockquote>
     </dd>
    
    
     <dt id="ini.yaf.name-suffix">
      <code class="parameter">yaf.name_suffix</code>
      <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
     </dt>
     <dd>
      <p class="simpara">
       当此值开启（默认）时，<span class="classname"><a href="class.yaf-loader.php" class="classname">Yaf_Loader</a></span>
       通过类的后缀来识别 MVC 类，以决定它是控制器还是动作类：
       <code class="literal">IndexController</code>、<code class="literal">IndexAction</code>。
      </p>
      <p class="simpara">
       当此值关闭时，<span class="classname"><a href="class.yaf-loader.php" class="classname">Yaf_Loader</a></span> 改为查看类名的前缀：
       <code class="literal">Controller_Index</code>、<code class="literal">Action_Index</code>。
      </p>
     </dd>
    
    
     <dt id="ini.yaf.name-separator">
      <code class="parameter">yaf.name_separator</code>
      <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
     </dt>
     <dd>
      <p class="simpara">
       当此值不为空时，<span class="classname"><a href="class.yaf-loader.php" class="classname">Yaf_Loader</a></span> 用此分隔符
       代替下划线来分隔名称与 MVC 后缀，以此识别 MVC 类。
      </p>
      <p class="simpara">
       例如，当此值为 <code class="literal">&quot;_&quot;</code> 且
       <a href="yaf.configuration.php#ini.yaf.name-suffix" class="link">yaf.name_suffix</a> 开启时，
       <span class="classname"><a href="class.yaf-loader.php" class="classname">Yaf_Loader</a></span> 会把
       <code class="literal">Index_Controller</code> 视为控制器类，
       而 <code class="literal">IndexController</code> 被视为普通类。
       当它为空（默认）时，使用下划线。
      </p>
     </dd>
    
  </dl>
 </p>
</div><?php manual_footer($setup); ?>