引导程序如何工作,特别是在Zend Framework中?

Gre*_*een 4 php bootstrapping zend-framework

我正在阅读Zend Framework手册,无法理解bootstrapping在ZF和一般情况下的工作原理.他们写:

您的Bootstrap类定义要初始化的资源和组件.

好.这意味着首先应该实例化Bootstrap类.但后来他们写了配置ini文件.并且有关于Bootstrap类本身的指令:

1.  bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
2.  bootstrap.class = "Bootstrap"
Run Code Online (Sandbox Code Playgroud)

因此,据我所知,这意味着它首先不是Bootstarp实例化的类.首先,必须阅读配置文件,获取有关Bootstrap类的信息并将该信息实例化.否则,无需Bootstrap在配置文件中获得有关该类的信息.因为我可以这样做:

require_once(/application/bootstrap.php) 
$b = new Bootstrap();
Run Code Online (Sandbox Code Playgroud)

和Bootstrap实例化.

但他们对于读取配置文件然后创建该实例的实例一无所知Bootstrap.

  1. Bootstrap如何真正起作用?
  2. 谁实例化它以及在哪个阶段?
  3. 他们说这APPLICATION_PATH是一个常数.必须先定义一个常量才能使用它.如果在Bootstrap类中使用它,可以在哪里定义?

谢谢.

dre*_*010 6

如果你查看index.phpZF附带的文件,这应该回答大多数问题.

APPLICATION_PATH常数被定义在index.php,并且这也是其中Zend_Application对象被创建,其简单地自举的应用程序,然后执行它.

有两种方法可以告诉你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',
    )
);
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,引导类和引导脚本作为$options直接Zend_Application构造函数的一部分与application.ini文件一起传递.

如果你将bootstrap类和脚本放在你的application.ini文件中,那么你可以这样初始化Zend_Application:

$application = new Zend_Application(
    APPLICATION_ENV,
    array('config' => APPLICATION_PATH . '/configs/application.ini')
);
Run Code Online (Sandbox Code Playgroud)

Zend_Application将处理application.ini文件并从那里收集Bootstrap信息.

然后,您可以调用$application->bootstrap()->run();以运行该应用程序.

直接回答你的问题:

  1. 引导程序设置您的应用程序.处理ini完文件后,这是第一件事.这将为您的ZF应用程序设置所有必需的组件(例如Front Controller,Zend_View,Layouts,DB connection等).
  2. index.php在一开始就实例化了它.
  3. APPLICATION_PATH 在index.php中立即定义