试图了解zend框架中的一些代码

时间:2013-04-18 08:51:46

标签: php zend-framework

项目/ index.php的

<?php
error_reporting(E_ALL|E_STRICT);
date_default_timezone_set('Europe/London');
set_include_path('.' . PATH_SEPARATOR . './library'
. PATH_SEPARATOR . './application/models/'
. PATH_SEPARATOR . get_include_path());
include "Zend/Loader.php";
Zend_Loader::loadClass('Zend_Controller_Front');
// setup controller
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->setControllerDirectory('./application/controllers');
// run!
$frontController->dispatch();
?>

的Zend /控制器/ Front.php

<?php
...
class Zend_Controller_Front
{
...
    protected static $_instance = null;
...
    protected $_throwExceptions = false;
...
    protected function __construct()
        {
            $this->_plugins = new Zend_Controller_Plugin_Broker();
        }
...
    public static function getInstance()
        {
            if (null === self::$_instance) {
                    self::$_instance = new self();
            }

        return self::$_instance;
        }
...
    public function throwExceptions($flag = null)
        {
            if ($flag !== null) {
                    $this->_throwExceptions = (bool) $flag;
                    return $this;
            }

            return $this->_throwExceptions;
        }
...
}
...
?>

问题:

  1. $this->_plugins = new Zend_Controller_Plugin_Broker(); 这门课的用法是什么:Zend_Controller_Plugin_Broker?它似乎没有在project / index.php
  2. 中做任何事情
  3. public function throwExceptions($flag = null) 为什么$flag !== null, return $this;$flag == null, return $this->_throwExceptions;?为什么不回报$ this?
  4. $frontController->setControllerDirectory('./application/controllers');“。”是指当前目录?为什么我们需要“。”?

1 个答案:

答案 0 :(得分:1)

  

这个类的用法是什么:Zend_Controller_Plugin_Broker?

用于管理控制器插件。如果你致电$front->registerPlugin(),插件经纪人就会处理这个电话。有关详细信息,请参阅http://framework.zend.com/manual/1.12/en/zend.controller.plugins.html

  

为什么$ flag!== null,返回$ this;而$ flag == null,返回$ this-&gt; _throwExceptions;?

它允许该功能有两个目的。如果在没有参数的情况下调用它,则返回throwExceptions的当前值。如果使用参数调用它,则设置值。

  

$ frontController-&GT; setControllerDirectory(” ./应用/控制器); “”是指当前目录?为什么我们需要“。”?

为什么不呢?它使路径相对于当前目录更清楚。