Zend框架布局 - php

我从Zend Framework开始,我想了解Bootstrap文件。我了解到所有_init方法都是默认执行的,但是这似乎让我感到困惑。无论如何,这不是我想问的。

$this->bootstrap('layout');动作出现了,我不确定是否理解这一点。这是application.ini文件中的resource.layout变量吗?我想真正深入地了解引导过程。

我要求您逐步解释。
提前致谢!

这是我的引导文件:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initAutoload()
    {
        $moduleLoader = new Zend_Application_Module_Autoloader(array(
            'namespace' => '',
            'basePath' => APPLICATION_PATH
        ));
        return $moduleLoader;
    }

    function _initViewHelpers()
    {
        $this->bootstrap('layout');

        $layout = $this->getResource('layout');
        $view = $layout->getView();
        $view->doctype('XHTML1_STRICT');
        $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8');
        $view->headTitle()->setSeparator(' - ');
        $view->headTitle('Zend Framework Tutorial');
    }
}

参考方案

application.ini中的行

resources.layout[] = 

等效于:

_initLayout() {}

Bootstrap.php

它们都正在初始化新对象,并且此对象设置为bootstrap参数,它是某些应用程序资源(由_init方法返回的值)的容器。

它们是一个接一个地执行的,因此要确保在当前资源之前初始化一个资源,请使用以下命令强制执行顺序:

_initSomeResource() {
    $this->bootstrap('otherResource');
    // ..
    return $someValue; 
}

_initOtherResource() {
    // .. 
}

因此,资源实例化的顺序为:

otherResource
someResource

现在,您还可以使用:

$bootstrap->getParam('someResource'); // returns $someValue

请注意,当您尝试相互执行之前,可能会遇到Circular Dependency错误。

您可以使用所需的许多_init方法,但是要使它们可重用,可以将它们分隔为自己的类,以实现Zend_Application_Resource_Abstract类。

有一些现成的应用程序资源,您可以在Zend/Application/Resource目录中找到这些资源。这些是您从application.ini引用的资源,即:

resources.view.encoding = "utf-8" ; in application.ini
Zend/Application/Resource/View.php (path to the resource class)
Zend_Application_Resource_View::setEncoding('UTF-8'); // equivalent pseudocode

希望现在更加清楚。

php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…

PHP-从最后一个循环中删除逗号 - php

我在循环时有一个PHP,如果是最后一个循环,我想从,中删除​​最后一个逗号echo '],'; while($ltr = mysql_fetch_array($lt)){ echo '['; echo $ltr['days']. ' ,'. $ltr['name…

PHP strtotime困境 - php

有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00�…

PHP:对数组排序 - php

请如何排序以下数组Array ( 'ben' => 1.0, 'ken' => 2.0, 'sam' => 1.5 ) 至Array ( 'ken' => 2.0, 'sam' => 1.5, 'ben' =&…

PHP-全局变量的性能和内存问题 - php

假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…