Zend中Bootstrap的作用是什么?

23

我想知道在Zend Framework中,Bootstrap的真正目的是什么。

Bootstrap类包含哪些方法?

有任何教程链接可以帮忙吗...如果问题太模糊,请原谅我。我正在尝试学习Zend,但教程和书籍都跳过了一些步骤,在框架网站上也不是很清晰。从快速启动中我只能学到它可以帮助开始会话。

我是否正确地认为在任何控制器加载之前,引导程序首先运行?我可以在Bootstrap中编写任何需要从一开始就加载的方法吗?如何在控制器中访问这些Bootstrap方法?

2个回答

22

维基百科中的解释如下:

在计算机领域,引导(bootstrapping)是指通过一个简单的计算机程序来激活一组更复杂的程序的技术。在计算机系统启动过程中,一个小型程序(例如BIOS)会初始化并测试硬件、外围设备和外部内存设备的基本要求是否已连接。然后它从其中一个设备加载程序并将控制权传递给它,从而允许加载更大的程序(例如操作系统)。

在Zend Framework中,“bootstrapping”是指加载应用程序的过程。这包括但不限于会话。在处理请求(分派)时,应用程序需要处理请求的任何资源都将在请求完成之前进行引导/加载/初始化,例如,在控制器将任何输入委托给模型并创建要返回给客户端的响应之前。

附加信息:http://framework.zend.com/manual/1.12/en/zend.application.theory-of-operation.html


谢谢Gordon。我会不会陷入需要在我的控制器中调用引导方法的状态?我可以随意命名我的引导方法吗?如果可以,这个方法会自动初始化吗? - Karthik
1
关于哪些资源也可能有用的信息。 因此,“Zend_Application Resource是Zend_Application知道并将在启动期间配置供使用的任何类”(来自[此处](http://www.survivethedeepend.com/zendframeworkbook/en/1.0/standardise.the.bootstrap.class.with.zend.application))。 - Marcin
@Marcin 是的,但资源确实可以是一切。例如,我不使用Zend_Application而是使用旧的Initializer方法。 - Gordon
@Gordon 是的...我现在可以看到从你提供的链接中如何在我的控制器上加载引导程序方法了...谢谢.. - Karthik
@Gordon。你说得对。我也在某个地方读到过(我记不清是哪里了),你从Bootstrap.php中的_init方法返回的所有内容也可以被视为资源。 - Marcin

5

正如Gordon所说:

在Zend Framework中,引导是加载应用程序的过程。这包括但不限于会话。

您可以在Bootstrap类中创建许多私有方法。所有以_init前缀开头的方法名称都将在应用程序启动之前执行一次。

这里举一个例子:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{

    protected function initSidebar(){
        // Define a placeholder view for a template/layout
        $this->bootstrap('View'); //Make sure the view resource is made available
        $view = $this->getResource('View');

        $view->placeholder('sidebar')
             ->setPrefix("<div class=\"sidebar\">\n    <div class=\"block\">\n")
             ->setSeparator("</div>\n    <div class=\"block\">\n")
             ->setPostfix("</div>\n</div>");
    }

    protected function initDocType() {
        // Define a constant for the Doctype string on the template
        $this->bootstrap('View');
        $view = $this->getResource('View');
        $view->doctype('HTML5');
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接