2012-06-12 3 views
4

Я читаю руководство Zend Framework и не могу понять, как работает самонастройка, особенно в ZF и вообще. Они пишут:Как загрузочный блок работает вообще и особенно в Zend Framework?

Ваш класс Bootstrap определяет, какие ресурсы и компоненты для Initialize.

Ok. Это означает, что сначала необходимо создать экземпляр класса 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

Если вы посмотрите файл index.php, который поставляется с ZF, это должно ответить на большинство этих вопросов.

Константа APPLICATION_PATH определена в index.php, и это также создает объект Zend_Application, который просто загружает приложение, а затем запускает его.

Есть 2 способа рассказать свой 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 «s конструктора, вместе с файлом application.ini.

Если поставить загрузочный класс и скрипт в файле application.ini, то вы можете инициализировать Zend_Application следующим образом:

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

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
2

Вот мое краткое объяснение:

Bootstrap инициализирует рамочные ресурсы, инициализирует конфигурацию рамочной, загружает классы и другие подготовительные работы рамки, она начала в каждом запросе, запускается index.php файла в конфигурации по умолчанию.

  1. Первый index.php называется где APPLICATION_PATH константа определена и передается Application конструктор класса.
  2. Экземпляр класса приложения, созданный в каркасе конструктора, считывает конфигурационный файл и сохраняет его для последующего использования.
  3. Тогда основа самонастройки начинается:

    I. Применение/Bootstrap экземпляр класса создан (Framework начинает создавать необходимые плагины, ресурсы, которые были определены в вашем * .ini файле.)

    II. Принимает ваш пользовательский класс начальной загрузки и инициализирует методы с помощью префикса init.

    III. Загружает ресурс FrontController, а фронт-контроллер запускает процесс диспетчеризации запросов (загружает модуль, контроллер, виды, обратные вызовы подключаемых модулей).

В целом вы можете отслеживать все самостоятельно начать с index.php файла, а затем в библиотеку и попытаться понять, что классы загружаются, в каком порядке.

Смежные вопросы