【问题标题】:How bootstrap works in general and particularly in Zend Framework?bootstrap 一般是如何工作的,特别是在 Zend Framework 中?
【发布时间】:2012-06-12 18:10:56
【问题描述】:

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

您的 Bootstrap 类定义了哪些资源和组件 初始化。

好的。这意味着首先应该实例化 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 类中使用,可以在哪里定义?

谢谢。

【问题讨论】:

    标签: php zend-framework bootstrapping


    【解决方案1】:

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

    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',
        )
    );
    

    在上面的示例中,引导类和引导脚本作为$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、Layouts、DB 连接等)。
    2. index.php 一开始就对其进行了实例化。
    3. APPLICATION_PATH 立即在 index.php 中定义

    【讨论】:

      【解决方案2】:

      这是我的简短解释:

      Bootstrap初始化框架资源、初始化框架配置、加载类等框架准备工作,在每次请求时启动,默认配置下由index.php文件启动。

      1. 首先调用index.php,其中定义了APPLICATION_PATH常量,并传递给Application类构造函数。
      2. 在构造函数框架中创建的应用程序类实例读取配置文件并存储以备后用。
      3. 然后框架引导开始:

        我。已创建应用程序/引导类实例(框架开始创建所需的插件、在您的 *.ini 文件中定义的资源。)

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

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

      总的来说,您可以自己跟踪所有内容,从 index.php 文件开始,然后到库并尝试了解加载了哪些类,以什么顺序。

      【讨论】:

        猜你喜欢
        • 2015-02-28
        • 2014-01-30
        • 2013-11-12
        • 2010-09-27
        • 2010-09-11
        • 1970-01-01
        • 2012-02-22
        • 1970-01-01
        相关资源
        最近更新 更多