2012-06-12 32 views
4

我在阅读Zend Framework手册,无法理解Bootstrapping在ZF和一般情况下如何工作。 他们写道:引导程序如何工作,尤其是在Zend Framework中?

你的引导类定义哪些资源和组件 初始化。

好的。这意味着Bootstrap类应该首先被实例化。 但是然后他们写关于配置ini文件。而且也有对Bootstrap类本身的指令在它:

1. bootstrap.path = APPLICATION_PATH "/Bootstrap.php" 
2. bootstrap.class = "Bootstrap" 

所以,按照我的理解它的意思,它是不是被实例化的首先的Bootstarp类。首先必须读取配置文件,获取有关Bootstrap类的信息并让该信息实例化。否则,不需要在配置文件中有关于Bootstrap类的信息。因为我可以这样做:

require_once(/application/bootstrap.php) 
$b = new Bootstrap(); 

并且Bootstrap被实例化。

但是他们对读取配置文件然后生成Bootstrap的实例没有提及。

  1. Bootstrap是如何运作的?
  2. 谁实例化它,并在哪个阶段?
  3. 他们认为APPLICATION_PATH是一个常数。在可以使用之前,常量必须在某处定义。在Bootstrap类中使用它可以定义在哪里?

谢谢。

回答

6

如果您看一下ZF附带的index.php文件,这应该回答大部分这些问题。

APPLICATION_PATH常数在index.php中定义,这也是创建对象的简单方法是引导应用程序,然后运行它。

有两种方法可以告诉您的Zend_Application引导程序位于ZF1中。

第一方式(显式地设置):

$application = new Zend_Application(
    APPLICATION_ENV, 
    array(
     'bootstrap' => array(
      'class' => 'Bootstrap', 
      'path' => APPLICATION_PATH . '/Bootstrap.php', 
     ), 
     'config' => APPLICATION_PATH . '/configs/application.ini', 
    ) 
); 

在上面的例子中,引导类和自举脚本被作为$options的部分直接传递给Zend_Application的构造,与application.ini文件一起。

如果你把引导类和脚本在application.ini文件,那么你可以像这样初始化Zend_Application

$application = new Zend_Application(
    APPLICATION_ENV, 
    array('config' => APPLICATION_PATH . '/configs/application.ini') 
); 

Zend_Application将处理application.ini文件,并从那里收集的引导信息。您可以拨打$application->bootstrap()->run();运行该应用程序。

直接回答你的问题:

  1. 的引导设置了您的应用程序。处理完您的ini文件后,这是第一件事情发生。这为您的ZF应用程序设置了所有必需的组件(例如Front Controller,Zend_View,布局,数据库连接等)。
  2. index.php在一开始就非常实例化它。
  3. APPLICATION_PATH立即在index.php中定义
2

这里是我的简短说明:

引导初始化框架资源,初始化框架结构,加载类和其他框架的准备工作,它在每个请求开始,在默认配置index.php文件开始。其中APPLICATION_PATH常数被定义并且被传递到Application类构造

  1. 首先index.php被调用。
  2. 在构造函数框架中创建的应用程序类实例读取配置文件并存储以供以后使用。
  3. 然后框架引导开始:创建

    一,应用/自举类实例(框架开始创建需要的插件,这是在你的* .ini文件中定义的资源。)

    II。使用您的自定义引导类并使用init前缀初始化方法。

    三,加载FrontController资源,并且前端控制器启动请求调度过程(加载模块,控制器,视图,调用插件回调)。

总体自行从index.php文件开始,然后到图书馆,并尝试理解类装入什么,以什么顺序,你可以跟踪一切。

相关问题