Heim  >  Artikel  >  php教程  >  yii2源码学习笔记(十)

yii2源码学习笔记(十)

WBOY
WBOYOriginal
2016-06-06 09:32:34768Durchsuche

继续了解Application.

<span style="color: #008080;">  1</span>   <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;">  2</span> <span style="color: #008000;">     * Registers the errorHandler component as a PHP error handler.
</span><span style="color: #008080;">  3</span> <span style="color: #008000;">     * 注册errorHandler组件作为PHP错误处理函数
</span><span style="color: #008080;">  4</span> <span style="color: #008000;">     * @param array $config application config  应用程序配置
</span><span style="color: #008080;">  5</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;">  6</span>     <span style="color: #0000ff;">protected</span> function registerErrorHandler(&<span style="color: #000000;">$config)
</span><span style="color: #008080;">  7</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">  8</span>         <span style="color: #0000ff;">if</span> (YII_ENABLE_ERROR_HANDLER) {<span style="color: #008000;">//</span><span style="color: #008000;"> YII_ENABLE_ERROR_HANDLER在BaseYii中被定义为true</span>
<span style="color: #008080;">  9</span>             <span style="color: #0000ff;">if</span> (!isset($config[<span style="color: #800000;">'</span><span style="color: #800000;">components</span><span style="color: #800000;">'</span>][<span style="color: #800000;">'</span><span style="color: #800000;">errorHandler</span><span style="color: #800000;">'</span>][<span style="color: #800000;">'</span><span style="color: #800000;">class</span><span style="color: #800000;">'</span><span style="color: #000000;">])) {
</span><span style="color: #008080;"> 10</span>                 <span style="color: #008000;">//</span><span style="color: #008000;">$config['components']['errorHandler']['class']不存在结束运行    </span>
<span style="color: #008080;"> 11</span>                 echo <span style="color: #800000;">"</span><span style="color: #800000;">Error: no errorHandler component is configured.\n</span><span style="color: #800000;">"</span><span style="color: #000000;">;
</span><span style="color: #008080;"> 12</span>                 exit(<span style="color: #800080;">1</span><span style="color: #000000;">);
</span><span style="color: #008080;"> 13</span> <span style="color: #000000;">            }
</span><span style="color: #008080;"> 14</span>             <span style="color: #008000;">//</span><span style="color: #008000;">将$config['components']['errorHandler']的内容设置到了$this->_definitions['errorHandler']中</span>
<span style="color: #008080;"> 15</span>             $<span style="color: #0000ff;">this</span>-><span style="color: #0000ff;">set</span>(<span style="color: #800000;">'</span><span style="color: #800000;">errorHandler</span><span style="color: #800000;">'</span>, $config[<span style="color: #800000;">'</span><span style="color: #800000;">components</span><span style="color: #800000;">'</span>][<span style="color: #800000;">'</span><span style="color: #800000;">errorHandler</span><span style="color: #800000;">'</span><span style="color: #000000;">]);
</span><span style="color: #008080;"> 16</span>             unset($config[<span style="color: #800000;">'</span><span style="color: #800000;">components</span><span style="color: #800000;">'</span>][<span style="color: #800000;">'</span><span style="color: #800000;">errorHandler</span><span style="color: #800000;">'</span>]);<span style="color: #008000;">//</span><span style="color: #008000;"> 删除掉配置内容</span>
<span style="color: #008080;"> 17</span>             $<span style="color: #0000ff;">this</span>->getErrorHandler()-><span style="color: #000000;">register();
</span><span style="color: #008080;"> 18</span> <span style="color: #000000;">        }
</span><span style="color: #008080;"> 19</span> <span style="color: #000000;">    }
</span><span style="color: #008080;"> 20</span> 
<span style="color: #008080;"> 21</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;"> 22</span> <span style="color: #008000;">     * Returns an ID that uniquely identifies this module among all modules within the current application.
</span><span style="color: #008080;"> 23</span> <span style="color: #008000;">     * Since this is an application instance, it will always return an empty string.
</span><span style="color: #008080;"> 24</span> <span style="color: #008000;">     * 返回在当前应用程序中该模块的唯一标识。这是一个应用实例,它将返回一个空字符串。
</span><span style="color: #008080;"> 25</span> <span style="color: #008000;">     * @return string the unique ID of the module.模块的唯一标识。
</span><span style="color: #008080;"> 26</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;"> 27</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function getUniqueId()
</span><span style="color: #008080;"> 28</span> <span style="color: #000000;">    {
</span><span style="color: #008080;"> 29</span>         <span style="color: #0000ff;">return</span> <span style="color: #800000;">''</span><span style="color: #000000;">;
</span><span style="color: #008080;"> 30</span> <span style="color: #000000;">    }
</span><span style="color: #008080;"> 31</span> 
<span style="color: #008080;"> 32</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;"> 33</span> <span style="color: #008000;">     * Sets the root directory of the application and the @app alias.设置应用程序的根目录 @ 加应用程序别名。
</span><span style="color: #008080;"> 34</span> <span style="color: #008000;">     * This method can only be invoked at the beginning of the constructor.只能在构造函数开始时调用该方法
</span><span style="color: #008080;"> 35</span> <span style="color: #008000;">     * @param string $path the root directory of the application.应用程序的根目录。
</span><span style="color: #008080;"> 36</span> <span style="color: #008000;">     * @property string the root directory of the application. 应用程序的根目录。
</span><span style="color: #008080;"> 37</span> <span style="color: #008000;">     * @throws InvalidParamException if the directory does not exist. 如果目录不存在。抛出异常
</span><span style="color: #008080;"> 38</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;"> 39</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function setBasePath($path)
</span><span style="color: #008080;"> 40</span> <span style="color: #000000;">    {
</span><span style="color: #008080;"> 41</span> <span style="color: #000000;">        parent::setBasePath($path);
</span><span style="color: #008080;"> 42</span>         <span style="color: #008000;">//</span><span style="color: #008000;"> 使用@app来记录basePath</span>
<span style="color: #008080;"> 43</span>         Yii::setAlias(<span style="color: #800000;">'</span><span style="color: #800000;">@app</span><span style="color: #800000;">'</span>, $<span style="color: #0000ff;">this</span>-><span style="color: #000000;">getBasePath());
</span><span style="color: #008080;"> 44</span> <span style="color: #000000;">    }
</span><span style="color: #008080;"> 45</span> 
<span style="color: #008080;"> 46</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;"> 47</span> <span style="color: #008000;">     * Runs the application.    运行应用程序。
</span><span style="color: #008080;"> 48</span> <span style="color: #008000;">     * This is the main entrance of an application. 应用程序的主要入口。
</span><span style="color: #008080;"> 49</span> <span style="color: #008000;">     * @return integer the exit status (0 means normal, non-zero values mean abnormal) 状态(0正常,非0为不正常)
</span><span style="color: #008080;"> 50</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;"> 51</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function run()
</span><span style="color: #008080;"> 52</span> <span style="color: #000000;">    {
</span><span style="color: #008080;"> 53</span>         <span style="color: #0000ff;">try</span><span style="color: #000000;"> {
</span><span style="color: #008080;"> 54</span> 
<span style="color: #008080;"> 55</span>             $<span style="color: #0000ff;">this</span>->state =<span style="color: #000000;"> self::STATE_BEFORE_REQUEST; 
</span><span style="color: #008080;"> 56</span>             $<span style="color: #0000ff;">this</span>->trigger(self::EVENT_BEFORE_REQUEST);<span style="color: #008000;">//</span><span style="color: #008000;">加载事件函数beforRequest函数</span>
<span style="color: #008080;"> 57</span> 
<span style="color: #008080;"> 58</span>             $<span style="color: #0000ff;">this</span>->state =<span style="color: #000000;"> self::STATE_HANDLING_REQUEST;
</span><span style="color: #008080;"> 59</span>             $response = $<span style="color: #0000ff;">this</span>->handleRequest($<span style="color: #0000ff;">this</span>->getRequest());<span style="color: #008000;">//</span><span style="color: #008000;">加载控制器  获取Request对象</span>
<span style="color: #008080;"> 60</span> 
<span style="color: #008080;"> 61</span>             $<span style="color: #0000ff;">this</span>->state =<span style="color: #000000;"> self::STATE_AFTER_REQUEST;
</span><span style="color: #008080;"> 62</span>             $<span style="color: #0000ff;">this</span>->trigger(self::EVENT_AFTER_REQUEST);<span style="color: #008000;">//</span><span style="color: #008000;">加载afterRequest事件函数</span>
<span style="color: #008080;"> 63</span> 
<span style="color: #008080;"> 64</span>             $<span style="color: #0000ff;">this</span>->state =<span style="color: #000000;"> self::STATE_SENDING_RESPONSE;
</span><span style="color: #008080;"> 65</span>             $response->send();<span style="color: #008000;">//</span><span style="color: #008000;">将页面内容输入缓冲,然后输出</span>
<span style="color: #008080;"> 66</span> 
<span style="color: #008080;"> 67</span>             $<span style="color: #0000ff;">this</span>->state =<span style="color: #000000;"> self::STATE_END;
</span><span style="color: #008080;"> 68</span> 
<span style="color: #008080;"> 69</span>             <span style="color: #0000ff;">return</span> $response-><span style="color: #000000;">exitStatus;
</span><span style="color: #008080;"> 70</span> 
<span style="color: #008080;"> 71</span>         } <span style="color: #0000ff;">catch</span><span style="color: #000000;"> (ExitException $e) {
</span><span style="color: #008080;"> 72</span>             
<span style="color: #008080;"> 73</span>             $<span style="color: #0000ff;">this</span>->end($e->statusCode, isset($response) ? $response : <span style="color: #0000ff;">null</span><span style="color: #000000;">);
</span><span style="color: #008080;"> 74</span>             <span style="color: #0000ff;">return</span> $e-><span style="color: #000000;">statusCode;
</span><span style="color: #008080;"> 75</span> 
<span style="color: #008080;"> 76</span> <span style="color: #000000;">        }
</span><span style="color: #008080;"> 77</span> <span style="color: #000000;">    }
</span><span style="color: #008080;"> 78</span> 
<span style="color: #008080;"> 79</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;"> 80</span> <span style="color: #008000;">     * Handles the specified request.
</span><span style="color: #008080;"> 81</span> <span style="color: #008000;">     *  处理指定的请求
</span><span style="color: #008080;"> 82</span> <span style="color: #008000;">     * This method should return an instance of [[Response]] or its child class
</span><span style="color: #008080;"> 83</span> <span style="color: #008000;">     * which represents the handling result of the request.
</span><span style="color: #008080;"> 84</span> <span style="color: #008000;">     *  该方法应该返回一个[[Response]]实例,或者它的子类代表处理请求的结果
</span><span style="color: #008080;"> 85</span> <span style="color: #008000;">     * @param Request $request the request to be handled    被处理的请求
</span><span style="color: #008080;"> 86</span> <span style="color: #008000;">     * @return Response the resulting response  得到的响应
</span><span style="color: #008080;"> 87</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;"> 88</span>     <span style="color: #0000ff;">abstract</span> <span style="color: #0000ff;">public</span><span style="color: #000000;"> function handleRequest($request);
</span><span style="color: #008080;"> 89</span> 
<span style="color: #008080;"> 90</span>     <span style="color: #0000ff;">private</span><span style="color: #000000;"> $_runtimePath;
</span><span style="color: #008080;"> 91</span> 
<span style="color: #008080;"> 92</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;"> 93</span> <span style="color: #008000;">     * Returns the directory that stores runtime files.返回存储运行时文件的路径
</span><span style="color: #008080;"> 94</span> <span style="color: #008000;">     * @return string the directory that stores runtime files.存储运行时文件的目录。
</span><span style="color: #008080;"> 95</span> <span style="color: #008000;">     * Defaults to the "runtime" subdirectory under [[basePath]].默认返回[[basePath]]下的 "runtime"目录
</span><span style="color: #008080;"> 96</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;"> 97</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function getRuntimePath()
</span><span style="color: #008080;"> 98</span> <span style="color: #000000;">    {
</span><span style="color: #008080;"> 99</span>         <span style="color: #0000ff;">if</span> ($<span style="color: #0000ff;">this</span>->_runtimePath === <span style="color: #0000ff;">null</span>) {<span style="color: #008000;">//</span><span style="color: #008000;">设置临时文件存储路径</span>
<span style="color: #008080;">100</span>             $<span style="color: #0000ff;">this</span>->setRuntimePath($<span style="color: #0000ff;">this</span>->getBasePath() . DIRECTORY_SEPARATOR . <span style="color: #800000;">'</span><span style="color: #800000;">runtime</span><span style="color: #800000;">'</span><span style="color: #000000;">);
</span><span style="color: #008080;">101</span> <span style="color: #000000;">        }
</span><span style="color: #008080;">102</span> 
<span style="color: #008080;">103</span>         <span style="color: #0000ff;">return</span> $<span style="color: #0000ff;">this</span>-><span style="color: #000000;">_runtimePath;
</span><span style="color: #008080;">104</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">105</span> 
<span style="color: #008080;">106</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;">107</span> <span style="color: #008000;">     * Sets the directory that stores runtime files.设置存储运行时文件的路径
</span><span style="color: #008080;">108</span> <span style="color: #008000;">     * @param string $path the directory that stores runtime files.存储运行时文件的目录。
</span><span style="color: #008080;">109</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;">110</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function setRuntimePath($path)
</span><span style="color: #008080;">111</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">112</span>         <span style="color: #008000;">//</span><span style="color: #008000;"> 获取runtimePath的路径,并存到_runtimePath中</span>
<span style="color: #008080;">113</span>         $<span style="color: #0000ff;">this</span>->_runtimePath =<span style="color: #000000;"> Yii::getAlias($path);
</span><span style="color: #008080;">114</span>          <span style="color: #008000;">//</span><span style="color: #008000;"> 使用@runtime来记录 runtimePath</span>
<span style="color: #008080;">115</span>         Yii::setAlias(<span style="color: #800000;">'</span><span style="color: #800000;">@runtime</span><span style="color: #800000;">'</span>, $<span style="color: #0000ff;">this</span>-><span style="color: #000000;">_runtimePath);
</span><span style="color: #008080;">116</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">117</span> 
<span style="color: #008080;">118</span>     <span style="color: #0000ff;">private</span><span style="color: #000000;"> $_vendorPath;
</span><span style="color: #008080;">119</span> 
<span style="color: #008080;">120</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;">121</span> <span style="color: #008000;">     * Returns the directory that stores vendor files.返回插件文件的目录。
</span><span style="color: #008080;">122</span> <span style="color: #008000;">     * @return string the directory that stores vendor files.
</span><span style="color: #008080;">123</span> <span style="color: #008000;">     * Defaults to "vendor" directory under [[basePath]].
</span><span style="color: #008080;">124</span> <span style="color: #008000;">     * 默认返回[[basePath]]下的 "vendor" 目录
</span><span style="color: #008080;">125</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;">126</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function getVendorPath()
</span><span style="color: #008080;">127</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">128</span>         <span style="color: #0000ff;">if</span> ($<span style="color: #0000ff;">this</span>->_vendorPath === <span style="color: #0000ff;">null</span><span style="color: #000000;">) {
</span><span style="color: #008080;">129</span>             <span style="color: #008000;">//</span><span style="color: #008000;"> 不存在,就将其设置为basePath/vendor</span>
<span style="color: #008080;">130</span>             $<span style="color: #0000ff;">this</span>->setVendorPath($<span style="color: #0000ff;">this</span>->getBasePath() . DIRECTORY_SEPARATOR . <span style="color: #800000;">'</span><span style="color: #800000;">vendor</span><span style="color: #800000;">'</span><span style="color: #000000;">);
</span><span style="color: #008080;">131</span> <span style="color: #000000;">        }
</span><span style="color: #008080;">132</span> 
<span style="color: #008080;">133</span>         <span style="color: #0000ff;">return</span> $<span style="color: #0000ff;">this</span>-><span style="color: #000000;">_vendorPath;
</span><span style="color: #008080;">134</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">135</span> 
<span style="color: #008080;">136</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;">137</span> <span style="color: #008000;">     * Sets the directory that stores vendor files.设置插件目录路径,并设置别名
</span><span style="color: #008080;">138</span> <span style="color: #008000;">     * @param string $path the directory that stores vendor files.
</span><span style="color: #008080;">139</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;">140</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function setVendorPath($path)
</span><span style="color: #008080;">141</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">142</span>         $<span style="color: #0000ff;">this</span>->_vendorPath = Yii::getAlias($path);<span style="color: #008000;">//</span><span style="color: #008000;"> 获取vendor的路径,并存到_vendorPath中</span>
<span style="color: #008080;">143</span>         Yii::setAlias(<span style="color: #800000;">'</span><span style="color: #800000;">@vendor</span><span style="color: #800000;">'</span>, $<span style="color: #0000ff;">this</span>->_vendorPath);<span style="color: #008000;">//</span><span style="color: #008000;"> 设置@vendor的alias</span>
<span style="color: #008080;">144</span>         Yii::setAlias(<span style="color: #800000;">'</span><span style="color: #800000;">@bower</span><span style="color: #800000;">'</span>, $<span style="color: #0000ff;">this</span>->_vendorPath . DIRECTORY_SEPARATOR . <span style="color: #800000;">'</span><span style="color: #800000;">bower</span><span style="color: #800000;">'</span><span style="color: #000000;">);
</span><span style="color: #008080;">145</span>         Yii::setAlias(<span style="color: #800000;">'</span><span style="color: #800000;">@npm</span><span style="color: #800000;">'</span>, $<span style="color: #0000ff;">this</span>->_vendorPath . DIRECTORY_SEPARATOR . <span style="color: #800000;">'</span><span style="color: #800000;">npm</span><span style="color: #800000;">'</span><span style="color: #000000;">);
</span><span style="color: #008080;">146</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">147</span> 
<span style="color: #008080;">148</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;">149</span> <span style="color: #008000;">     * Returns the time zone used by this application.取得时区
</span><span style="color: #008080;">150</span> <span style="color: #008000;">     * This is a simple wrapper of PHP function date_default_timezone_get().
</span><span style="color: #008080;">151</span> <span style="color: #008000;">     * If time zone is not configured in php.ini or application config,
</span><span style="color: #008080;">152</span> <span style="color: #008000;">     * it will be set to UTC by default.
</span><span style="color: #008080;">153</span> <span style="color: #008000;">     * @return string the time zone used by this application.
</span><span style="color: #008080;">154</span> <span style="color: #008000;">     * @see </span><span style="color: #008000; text-decoration: underline;">http://php.net/manual/en/function.date-default-timezone-get.php</span>
<span style="color: #008080;">155</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;">156</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function getTimeZone()
</span><span style="color: #008080;">157</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">158</span>         <span style="color: #0000ff;">return</span><span style="color: #000000;"> date_default_timezone_get();
</span><span style="color: #008080;">159</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">160</span> 
<span style="color: #008080;">161</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;">162</span> <span style="color: #008000;">     * Sets the time zone used by this application.设置时区
</span><span style="color: #008080;">163</span> <span style="color: #008000;">     * This is a simple wrapper of PHP function date_default_timezone_set().
</span><span style="color: #008080;">164</span> <span style="color: #008000;">     * Refer to the [php manual](</span><span style="color: #008000; text-decoration: underline;">http://www.php.net/manual/en/timezones.php</span><span style="color: #008000;">) for available timezones.
</span><span style="color: #008080;">165</span> <span style="color: #008000;">     * @param string $value the time zone used by this application.
</span><span style="color: #008080;">166</span> <span style="color: #008000;">     * @see </span><span style="color: #008000; text-decoration: underline;">http://php.net/manual/en/function.date-default-timezone-set.php</span>
<span style="color: #008080;">167</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;">168</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function setTimeZone($value)
</span><span style="color: #008080;">169</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">170</span> <span style="color: #000000;">        date_default_timezone_set($value);
</span><span style="color: #008080;">171</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">172</span> 
<span style="color: #008080;">173</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;">174</span> <span style="color: #008000;">     * Returns the database connection component.返回数据库连接组件
</span><span style="color: #008080;">175</span> <span style="color: #008000;">     * @return \yii\db\Connection the database connection.
</span><span style="color: #008080;">176</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;">177</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function getDb()
</span><span style="color: #008080;">178</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">179</span>         <span style="color: #0000ff;">return</span> $<span style="color: #0000ff;">this</span>-><span style="color: #0000ff;">get</span>(<span style="color: #800000;">'</span><span style="color: #800000;">db</span><span style="color: #800000;">'</span><span style="color: #000000;">);
</span><span style="color: #008080;">180</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">181</span> 
<span style="color: #008080;">182</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;">183</span> <span style="color: #008000;">     * Returns the log dispatcher component.返回日志调度组件
</span><span style="color: #008080;">184</span> <span style="color: #008000;">     * @return \yii\log\Dispatcher the log dispatcher application component.
</span><span style="color: #008080;">185</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;">186</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function getLog()
</span><span style="color: #008080;">187</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">188</span>         <span style="color: #0000ff;">return</span> $<span style="color: #0000ff;">this</span>-><span style="color: #0000ff;">get</span>(<span style="color: #800000;">'</span><span style="color: #800000;">log</span><span style="color: #800000;">'</span><span style="color: #000000;">);
</span><span style="color: #008080;">189</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">190</span> 
<span style="color: #008080;">191</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;">192</span> <span style="color: #008000;">     * Returns the error handler component.返回错误处理组件
</span><span style="color: #008080;">193</span> <span style="color: #008000;">     * @return \yii\web\ErrorHandler|\yii\console\ErrorHandler the error handler application component.
</span><span style="color: #008080;">194</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;">195</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function getErrorHandler()
</span><span style="color: #008080;">196</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">197</span>         <span style="color: #0000ff;">return</span> $<span style="color: #0000ff;">this</span>-><span style="color: #0000ff;">get</span>(<span style="color: #800000;">'</span><span style="color: #800000;">errorHandler</span><span style="color: #800000;">'</span><span style="color: #000000;">);
</span><span style="color: #008080;">198</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">199</span> 
<span style="color: #008080;">200</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;">201</span> <span style="color: #008000;">     * Returns the cache component.返回缓存组件
</span><span style="color: #008080;">202</span> <span style="color: #008000;">     * @return \yii\caching\Cache the cache application component. Null if the component is not enabled.
</span><span style="color: #008080;">203</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;">204</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function getCache()
</span><span style="color: #008080;">205</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">206</span>         <span style="color: #0000ff;">return</span> $<span style="color: #0000ff;">this</span>-><span style="color: #0000ff;">get</span>(<span style="color: #800000;">'</span><span style="color: #800000;">cache</span><span style="color: #800000;">'</span>, <span style="color: #0000ff;">false</span><span style="color: #000000;">);
</span><span style="color: #008080;">207</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">208</span> 
<span style="color: #008080;">209</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;">210</span> <span style="color: #008000;">     * Returns the formatter component.返回格式化程序组件
</span><span style="color: #008080;">211</span> <span style="color: #008000;">     * @return \yii\i18n\Formatter the formatter application component.
</span><span style="color: #008080;">212</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;">213</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function getFormatter()
</span><span style="color: #008080;">214</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">215</span>         <span style="color: #0000ff;">return</span> $<span style="color: #0000ff;">this</span>-><span style="color: #0000ff;">get</span>(<span style="color: #800000;">'</span><span style="color: #800000;">formatter</span><span style="color: #800000;">'</span><span style="color: #000000;">);
</span><span style="color: #008080;">216</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">217</span> 
<span style="color: #008080;">218</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;">219</span> <span style="color: #008000;">     * Returns the request component.返回请求的组件对象
</span><span style="color: #008080;">220</span> <span style="color: #008000;">     * @return \yii\web\Request|\yii\console\Request the request component.
</span><span style="color: #008080;">221</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;">222</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function getRequest()
</span><span style="color: #008080;">223</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">224</span>         <span style="color: #0000ff;">return</span> $<span style="color: #0000ff;">this</span>-><span style="color: #0000ff;">get</span>(<span style="color: #800000;">'</span><span style="color: #800000;">request</span><span style="color: #800000;">'</span><span style="color: #000000;">);
</span><span style="color: #008080;">225</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">226</span> 
<span style="color: #008080;">227</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;">228</span> <span style="color: #008000;">     * Returns the response component.返回响应组件
</span><span style="color: #008080;">229</span> <span style="color: #008000;">     * @return \yii\web\Response|\yii\console\Response the response component.
</span><span style="color: #008080;">230</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;">231</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function getResponse()
</span><span style="color: #008080;">232</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">233</span>         <span style="color: #0000ff;">return</span> $<span style="color: #0000ff;">this</span>-><span style="color: #0000ff;">get</span>(<span style="color: #800000;">'</span><span style="color: #800000;">response</span><span style="color: #800000;">'</span><span style="color: #000000;">);
</span><span style="color: #008080;">234</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">235</span> 
<span style="color: #008080;">236</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;">237</span> <span style="color: #008000;">     * Returns the view object.返回视图对象
</span><span style="color: #008080;">238</span> <span style="color: #008000;">     * @return View|\yii\web\View the view application component that is used to render various view files.
</span><span style="color: #008080;">239</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;">240</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function getView()
</span><span style="color: #008080;">241</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">242</span>         <span style="color: #0000ff;">return</span> $<span style="color: #0000ff;">this</span>-><span style="color: #0000ff;">get</span>(<span style="color: #800000;">'</span><span style="color: #800000;">view</span><span style="color: #800000;">'</span><span style="color: #000000;">);
</span><span style="color: #008080;">243</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">244</span> 
<span style="color: #008080;">245</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;">246</span> <span style="color: #008000;">     * Returns the URL manager for this application.返回当前应用的URL管理组件
</span><span style="color: #008080;">247</span> <span style="color: #008000;">     * @return \yii\web\UrlManager the URL manager for this application.
</span><span style="color: #008080;">248</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;">249</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function getUrlManager()
</span><span style="color: #008080;">250</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">251</span>         <span style="color: #0000ff;">return</span> $<span style="color: #0000ff;">this</span>-><span style="color: #0000ff;">get</span>(<span style="color: #800000;">'</span><span style="color: #800000;">urlManager</span><span style="color: #800000;">'</span><span style="color: #000000;">);
</span><span style="color: #008080;">252</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">253</span> 
<span style="color: #008080;">254</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;">255</span> <span style="color: #008000;">     * Returns the internationalization (i18n) component返回国际化组件
</span><span style="color: #008080;">256</span> <span style="color: #008000;">     * @return \yii\i18n\I18N the internationalization application component.
</span><span style="color: #008080;">257</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;">258</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function getI18n()
</span><span style="color: #008080;">259</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">260</span>         <span style="color: #0000ff;">return</span> $<span style="color: #0000ff;">this</span>-><span style="color: #0000ff;">get</span>(<span style="color: #800000;">'</span><span style="color: #800000;">i18n</span><span style="color: #800000;">'</span><span style="color: #000000;">);
</span><span style="color: #008080;">261</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">262</span> 
<span style="color: #008080;">263</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;">264</span> <span style="color: #008000;">     * Returns the mailer component.返回邮件组件
</span><span style="color: #008080;">265</span> <span style="color: #008000;">     * @return \yii\mail\MailerInterface the mailer application component.
</span><span style="color: #008080;">266</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;">267</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function getMailer()
</span><span style="color: #008080;">268</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">269</span>         <span style="color: #0000ff;">return</span> $<span style="color: #0000ff;">this</span>-><span style="color: #0000ff;">get</span>(<span style="color: #800000;">'</span><span style="color: #800000;">mailer</span><span style="color: #800000;">'</span><span style="color: #000000;">);
</span><span style="color: #008080;">270</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">271</span> 
<span style="color: #008080;">272</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;">273</span> <span style="color: #008000;">     * Returns the auth manager for this application.返回该应用的权限管理组件
</span><span style="color: #008080;">274</span> <span style="color: #008000;">     * @return \yii\rbac\ManagerInterface the auth manager application component.
</span><span style="color: #008080;">275</span> <span style="color: #008000;">     * Null is returned if auth manager is not configured.   管理权限没有配置返回null
</span><span style="color: #008080;">276</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;">277</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function getAuthManager()
</span><span style="color: #008080;">278</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">279</span>         <span style="color: #0000ff;">return</span> $<span style="color: #0000ff;">this</span>-><span style="color: #0000ff;">get</span>(<span style="color: #800000;">'</span><span style="color: #800000;">authManager</span><span style="color: #800000;">'</span>, <span style="color: #0000ff;">false</span><span style="color: #000000;">);
</span><span style="color: #008080;">280</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">281</span> 
<span style="color: #008080;">282</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;">283</span> <span style="color: #008000;">     * Returns the asset manager.返回资源管理组件
</span><span style="color: #008080;">284</span> <span style="color: #008000;">     * @return \yii\web\AssetManager the asset manager application component.
</span><span style="color: #008080;">285</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;">286</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function getAssetManager()
</span><span style="color: #008080;">287</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">288</span>         <span style="color: #0000ff;">return</span> $<span style="color: #0000ff;">this</span>-><span style="color: #0000ff;">get</span>(<span style="color: #800000;">'</span><span style="color: #800000;">assetManager</span><span style="color: #800000;">'</span><span style="color: #000000;">);
</span><span style="color: #008080;">289</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">290</span> 
<span style="color: #008080;">291</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;">292</span> <span style="color: #008000;">     * Returns the security component.返回安全组件
</span><span style="color: #008080;">293</span> <span style="color: #008000;">     * @return \yii\base\Security the security application component.
</span><span style="color: #008080;">294</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;">295</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function getSecurity()
</span><span style="color: #008080;">296</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">297</span>         <span style="color: #0000ff;">return</span> $<span style="color: #0000ff;">this</span>-><span style="color: #0000ff;">get</span>(<span style="color: #800000;">'</span><span style="color: #800000;">security</span><span style="color: #800000;">'</span><span style="color: #000000;">);
</span><span style="color: #008080;">298</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">299</span> 
<span style="color: #008080;">300</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;">301</span> <span style="color: #008000;">     * Returns the configuration of core application components.返回核心组件的配置
</span><span style="color: #008080;">302</span> <span style="color: #008000;">     * @see set()
</span><span style="color: #008080;">303</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;">304</span>     <span style="color: #0000ff;">public</span><span style="color: #000000;"> function coreComponents()
</span><span style="color: #008080;">305</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">306</span>         <span style="color: #0000ff;">return</span><span style="color: #000000;"> [
</span><span style="color: #008080;">307</span>             <span style="color: #800000;">'</span><span style="color: #800000;">log</span><span style="color: #800000;">'</span> => [<span style="color: #800000;">'</span><span style="color: #800000;">class</span><span style="color: #800000;">'</span> => <span style="color: #800000;">'</span><span style="color: #800000;">yii\log\Dispatcher</span><span style="color: #800000;">'</span><span style="color: #000000;">],
</span><span style="color: #008080;">308</span>             <span style="color: #800000;">'</span><span style="color: #800000;">view</span><span style="color: #800000;">'</span> => [<span style="color: #800000;">'</span><span style="color: #800000;">class</span><span style="color: #800000;">'</span> => <span style="color: #800000;">'</span><span style="color: #800000;">yii\web\View</span><span style="color: #800000;">'</span><span style="color: #000000;">],
</span><span style="color: #008080;">309</span>             <span style="color: #800000;">'</span><span style="color: #800000;">formatter</span><span style="color: #800000;">'</span> => [<span style="color: #800000;">'</span><span style="color: #800000;">class</span><span style="color: #800000;">'</span> => <span style="color: #800000;">'</span><span style="color: #800000;">yii\i18n\Formatter</span><span style="color: #800000;">'</span><span style="color: #000000;">],
</span><span style="color: #008080;">310</span>             <span style="color: #800000;">'</span><span style="color: #800000;">i18n</span><span style="color: #800000;">'</span> => [<span style="color: #800000;">'</span><span style="color: #800000;">class</span><span style="color: #800000;">'</span> => <span style="color: #800000;">'</span><span style="color: #800000;">yii\i18n\I18N</span><span style="color: #800000;">'</span><span style="color: #000000;">],
</span><span style="color: #008080;">311</span>             <span style="color: #800000;">'</span><span style="color: #800000;">mailer</span><span style="color: #800000;">'</span> => [<span style="color: #800000;">'</span><span style="color: #800000;">class</span><span style="color: #800000;">'</span> => <span style="color: #800000;">'</span><span style="color: #800000;">yii\swiftmailer\Mailer</span><span style="color: #800000;">'</span><span style="color: #000000;">],
</span><span style="color: #008080;">312</span>             <span style="color: #800000;">'</span><span style="color: #800000;">urlManager</span><span style="color: #800000;">'</span> => [<span style="color: #800000;">'</span><span style="color: #800000;">class</span><span style="color: #800000;">'</span> => <span style="color: #800000;">'</span><span style="color: #800000;">yii\web\UrlManager</span><span style="color: #800000;">'</span><span style="color: #000000;">],
</span><span style="color: #008080;">313</span>             <span style="color: #800000;">'</span><span style="color: #800000;">assetManager</span><span style="color: #800000;">'</span> => [<span style="color: #800000;">'</span><span style="color: #800000;">class</span><span style="color: #800000;">'</span> => <span style="color: #800000;">'</span><span style="color: #800000;">yii\web\AssetManager</span><span style="color: #800000;">'</span><span style="color: #000000;">],
</span><span style="color: #008080;">314</span>             <span style="color: #800000;">'</span><span style="color: #800000;">security</span><span style="color: #800000;">'</span> => [<span style="color: #800000;">'</span><span style="color: #800000;">class</span><span style="color: #800000;">'</span> => <span style="color: #800000;">'</span><span style="color: #800000;">yii\base\Security</span><span style="color: #800000;">'</span><span style="color: #000000;">],
</span><span style="color: #008080;">315</span> <span style="color: #000000;">        ];
</span><span style="color: #008080;">316</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">317</span> 
<span style="color: #008080;">318</span>     <span style="color: #008000;">/*</span><span style="color: #008000;">*
</span><span style="color: #008080;">319</span> <span style="color: #008000;">     * Terminates the application.终止应用程序
</span><span style="color: #008080;">320</span> <span style="color: #008000;">     * This method replaces the `exit()` function by ensuring the application life cycle is completed
</span><span style="color: #008080;">321</span> <span style="color: #008000;">     * before terminating the application.该方法代替`exit()`  确认一个应用的生命周期已经结束
</span><span style="color: #008080;">322</span> <span style="color: #008000;">     * @param integer $status the exit status (value 0 means normal exit while other values mean abnormal exit).
</span><span style="color: #008080;">323</span> <span style="color: #008000;">     * @param Response $response the response to be sent. If not set, the default application [[response]] component will be used.
</span><span style="color: #008080;">324</span> <span style="color: #008000;">     * @throws ExitException if the application is in testing mode
</span><span style="color: #008080;">325</span>      <span style="color: #008000;">*/</span>
<span style="color: #008080;">326</span>     <span style="color: #0000ff;">public</span> function end($status = <span style="color: #800080;">0</span>, $response = <span style="color: #0000ff;">null</span><span style="color: #000000;">)
</span><span style="color: #008080;">327</span> <span style="color: #000000;">    {
</span><span style="color: #008080;">328</span>         <span style="color: #0000ff;">if</span> ($<span style="color: #0000ff;">this</span>->state === self::STATE_BEFORE_REQUEST || $<span style="color: #0000ff;">this</span>->state ===<span style="color: #000000;"> self::STATE_HANDLING_REQUEST) {
</span><span style="color: #008080;">329</span>             <span style="color: #008000;">//</span><span style="color: #008000;">判断当前状态为请求前或者处理请求</span>
<span style="color: #008080;">330</span>             $<span style="color: #0000ff;">this</span>->state = self::STATE_AFTER_REQUEST;<span style="color: #008000;">//</span><span style="color: #008000;">设置应用状态为请求完成后</span>
<span style="color: #008080;">331</span>             $<span style="color: #0000ff;">this</span>-><span style="color: #000000;">trigger(self::EVENT_AFTER_REQUEST);
</span><span style="color: #008080;">332</span> <span style="color: #000000;">        }
</span><span style="color: #008080;">333</span> 
<span style="color: #008080;">334</span>         <span style="color: #0000ff;">if</span> ($<span style="color: #0000ff;">this</span>->state !== self::STATE_SENDING_RESPONSE && $<span style="color: #0000ff;">this</span>->state !==<span style="color: #000000;"> self::STATE_END) {
</span><span style="color: #008080;">335</span>             <span style="color: #008000;">//</span><span style="color: #008000;">如果应用状态不是发送应答和应用结束</span>
<span style="color: #008080;">336</span>             $<span style="color: #0000ff;">this</span>->state = self::STATE_END;<span style="color: #008000;">//</span><span style="color: #008000;">设置状态为应用结束</span>
<span style="color: #008080;">337</span>             $response = $response ? : $<span style="color: #0000ff;">this</span>-><span style="color: #000000;">getResponse();
</span><span style="color: #008080;">338</span>             $response->send();<span style="color: #008000;">//</span><span style="color: #008000;">向客户端发送应答</span>
<span style="color: #008080;">339</span> <span style="color: #000000;">        }
</span><span style="color: #008080;">340</span> 
<span style="color: #008080;">341</span>         <span style="color: #0000ff;">if</span><span style="color: #000000;"> (YII_ENV_TEST) {
</span><span style="color: #008080;">342</span>             <span style="color: #0000ff;">throw</span> <span style="color: #0000ff;">new</span><span style="color: #000000;"> ExitException($status);
</span><span style="color: #008080;">343</span>         } <span style="color: #0000ff;">else</span><span style="color: #000000;"> {
</span><span style="color: #008080;">344</span> <span style="color: #000000;">            exit($status);
</span><span style="color: #008080;">345</span> <span style="color: #000000;">        }
</span><span style="color: #008080;">346</span>     }

 

php

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP文件上传及下载源码Nächster Artikel:PHP 优化详解