• 本章继续学习\Typecho\Common::init()方法
 // 源文件 /var/Typecho/Common.php
191 /**
192 * 程序初始化方法
193 *
194 * @access public
195 * @return void
196 */
197 public static function init()
198 {
199    // init response
200    Response::getInstance()->enableAutoSendHeaders(false);
201 
202    ob_start(function ($content) {
203        Response::getInstance()->sendHeaders();
204        return $content;
205    });
206 
207    /** 设置异常截获函数 */
208    set_exception_handler(function (\Throwable $exception) {
209        echo '<pre><code>';
210        echo '<h1>' . htmlspecialchars($exception->getMessage()) . '</h1>';
211        echo htmlspecialchars($exception->__toString());
212        echo '</code></pre>';
213        exit;
214    });
215 }
  • 第197行:函数或方法定义。
  • 第198、215行:大括号内包含函数代码段。
  • 第200行:Response::getInstance()返回一个Response类的实例,->enableAutoSendHeaders(false)调用实例类中的函数。此函数做了什么操作请看下面两段代码的注释。
  • 第202~205行:此函数将打开输出缓冲。当输出缓冲激活后,脚本将不会输出内容(消息头除外),相反需要输出的内容被存储在内部缓冲区中。
  • 第208行:设置默认的异常处理程序,用于没有用 try/catch 块来捕获的异常。
  • 第209~212行:输入异常消息。
  • 第213行:退出程序,不再执行后面的代码。
 // 源文件 /var/Typecho/Response.php
107    /**
108     * @var bool
109     */
110    private $enableAutoSendHeaders = true;
  • 第110行:给私有变量 $enableAutoSendHeaders 赋值为 true 了。
 // 源文件 /var/Typecho/Response.php
157    /**
158     * @param bool $enable
159     */
160    public function enableAutoSendHeaders(bool $enable = true)
161    {
162        $this->enableAutoSendHeaders = $enable;
163    }
  • 第162行:上面第200行代码传了一个参数 false 过来,看此行代码可知是给私有变量 $enableAutoSendHeaders 赋值为 false 了。

本章到此结束,下一章学习上面第203行的函数 Response::getInstance()->sendHeaders() 做了些什么事情。

标签: PHP学习笔记, typecho源代码注释

添加新评论