<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/class.yaf-application.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'zh',
  ),
  'this' => 
  array (
    0 => 'yaf-application.construct.php',
    1 => 'Yaf_Application::__construct',
    2 => 'Yaf_Application 的构造函数',
  ),
  'up' => 
  array (
    0 => 'class.yaf-application.php',
    1 => 'Yaf_Application',
  ),
  'prev' => 
  array (
    0 => 'yaf-application.clearlasterror.php',
    1 => 'Yaf_Application::clearLastError',
  ),
  'next' => 
  array (
    0 => 'yaf-application.environ.php',
    1 => 'Yaf_Application::environ',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'zh',
    'path' => 'reference/yaf/yaf_application/construct.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="yaf-application.construct" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">Yaf_Application::__construct</h1>
  <p class="verinfo">(Yaf &gt;=1.0.0)</p><p class="refpurpose"><span class="refname">Yaf_Application::__construct</span> &mdash; <span class="dc-title">Yaf_Application 的构造函数</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-yaf-application.construct-description">
  <h3 class="title">说明</h3>
  <div class="constructorsynopsis dc-description">
   <span class="modifier">public</span> <span class="modifier">function</span> <span class="methodname"><strong>Yaf_Application::__construct</strong></span>(<span class="methodparam"><span class="type"><span class="type"><a href="language.types.string.php" class="type string">string</a></span>|<span class="type"><a href="language.types.array.php" class="type array">array</a></span></span> <code class="parameter">$config</code></span>, <span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="language.types.string.php" class="type string">string</a></span></span> <code class="parameter">$environ</code><span class="initializer"> = null</span></span>)</div>

  <p class="simpara">
   实例化一个 <span class="classname"><a href="class.yaf-application.php" class="classname">Yaf_Application</a></span>。构造函数同时会初始化
   单例应用、<span class="classname"><a href="class.yaf-loader.php" class="classname">Yaf_Loader</a></span> 和
   <span class="classname"><a href="class.yaf-dispatcher.php" class="classname">Yaf_Dispatcher</a></span>，因此在使用它们之前必须先调用构造函数。
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-yaf-application.construct-parameters">
  <h3 class="title">参数</h3>
  <dl>
   
    <dt><code class="parameter">config</code></dt>
    <dd>
     <p class="simpara">
      INI 配置文件的路径，或者配置数组。
     </p>
     <p class="simpara">
      如果是 INI 配置文件，其中应该有一个以
      <a href="yaf.configuration.php#ini.yaf.environ" class="link">yaf.environ</a> 定义的名称命名的配置节，
      默认是 <code class="literal">&quot;product&quot;</code>。
     </p>
     <p class="simpara">
      应用程序配置项（及其默认值）在
      <a href="yaf.appconfig.php" class="link">应用程序配置</a>中有说明：
     </p>
     <p class="para">
      <div class="example" id="example-1">
       <p><strong>示例 #1 INI 配置文件示例</strong></p>
       <div class="example-contents">
<div class="inicode"><pre class="inicode">[product]
;这一项必须始终定义，且没有默认值
application.directory=APPLICATION_PATH

;以下配置项有默认值，可能不需要定义
application.library = APPLICATION_PATH . &quot;/library&quot;
application.dispatcher.throwException=1
application.dispatcher.catchException=1

application.baseUri=&quot;&quot;

;php 脚本的扩展名
application.ext=php

;视图模板的扩展名
application.view.ext=phtml

application.dispatcher.defaultModule=Index
application.dispatcher.defaultController=Index
application.dispatcher.defaultAction=index

;定义的模块
application.modules=Index</pre>
</div>
       </div>

      </div>
     </p>
    </dd>
   
   
    <dt><code class="parameter">environ</code></dt>
    <dd>
     <p class="simpara">
      指定哪个配置节将作为最终配置被加载。如果未提供，
      则使用 <a href="yaf.configuration.php#ini.yaf.environ" class="link">yaf.environ</a>
      指令的值。
     </p>
    </dd>
   
  </dl>
 </div>


 <div class="refsect1 errors" id="refsect1-yaf-application.construct-errors">
  <h3 class="title">错误／异常</h3>
  <p class="simpara">
   如果 <span class="classname"><a href="class.yaf-application.php" class="classname">Yaf_Application</a></span> 已经被实例化，或者配置无效，
   将抛出 <span class="exceptionname"><a href="class.yaf-exception-startuperror.php" class="exceptionname">Yaf_Exception_StartupError</a></span> 异常
   （当 <span class="methodname"><a href="yaf-dispatcher.throwexception.php" class="methodname">Yaf_Dispatcher::throwException()</a></span> 关闭时，
   则触发 <strong><code><a href="yaf.constants.php#constant.yaf-err-startup-failed">YAF_ERR_STARTUP_FAILED</a></code></strong> 错误）。
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-yaf-application.construct-examples">
  <h3 class="title">示例</h3>
  <div class="example" id="example-2">
   <p><strong>示例 #2 <span class="function"><strong>Yaf_Application::__construct()</strong></span> 示例</strong></p>
   <div class="example-contents">
<div class="phpcode"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php
defined</span><span style="color: #007700">(</span><span style="color: #DD0000">'APPLICATION_PATH'</span><span style="color: #007700">)                  </span><span style="color: #FF8000">// APPLICATION_PATH 将在 ini 配置文件中使用
    </span><span style="color: #007700">|| </span><span style="color: #0000BB">define</span><span style="color: #007700">(</span><span style="color: #DD0000">'APPLICATION_PATH'</span><span style="color: #007700">, </span><span style="color: #0000BB">__DIR__</span><span style="color: #007700">);

</span><span style="color: #0000BB">$application </span><span style="color: #007700">= new </span><span style="color: #0000BB">Yaf_Application</span><span style="color: #007700">(</span><span style="color: #0000BB">APPLICATION_PATH</span><span style="color: #007700">.</span><span style="color: #DD0000">'/conf/application.ini'</span><span style="color: #007700">);
</span><span style="color: #0000BB">$application</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">bootstrap</span><span style="color: #007700">()-&gt;</span><span style="color: #0000BB">run</span><span style="color: #007700">();
</span><span style="color: #0000BB">?&gt;</span></code></pre></div>
   </div>

  </div>
  <div class="example" id="example-3">
   <p><strong>示例 #3 <span class="function"><strong>Yaf_Application::__construct()</strong></span> 示例</strong></p>
   <div class="example-contents">
<div class="phpcode"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php
$config </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">realpath</span><span style="color: #007700">(</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">"/application"</span><span style="color: #007700">,
    ),
);

</span><span style="color: #FF8000">/** Yaf_Application */
</span><span style="color: #0000BB">$application </span><span style="color: #007700">= new </span><span style="color: #0000BB">Yaf_Application</span><span style="color: #007700">(</span><span style="color: #0000BB">$config</span><span style="color: #007700">);
</span><span style="color: #0000BB">$application</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">bootstrap</span><span style="color: #007700">()-&gt;</span><span style="color: #0000BB">run</span><span style="color: #007700">();
</span><span style="color: #0000BB">?&gt;</span></code></pre></div>
   </div>

  </div>
 </div>


 <div class="refsect1 seealso" id="refsect1-yaf-application.construct-seealso">
  <h3 class="title">参见</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="classname"><a href="class.yaf-config-ini.php" class="classname">Yaf_Config_Ini</a></span></li>
    <li><a href="yaf.appconfig.php" class="link">应用程序配置</a></li>
   </ul>
  </p>
 </div>


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