Прочитайте комментарии в коде для описания:
<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
public function __construct($configSection){
$rootDir = dirname(dirname(__FILE__));
define('ROOT_DIR',$rootDir);
set_include_path(get_include_path()
. PATH_SEPARATOR . ROOT_DIR . '/library/'
. PATH_SEPARATOR . ROOT_DIR .
'application/models'
);
//PROBLEM LIES HERE, BEWARE OF DRAGONS.
//Using this, I receive a deprecated warning.
include 'Zend/Loader.php';
Zend_Loader::registerAutoload();
//Using this, I recieve an error that autoload() has missing arguments.
//Zend_Loader_Autoloader::autoload();
//Load the configuration file.
Zend_Registry::set('configSection', $configSection);
$config = new Zend_Config_Ini(ROOT_DIR . '/application/config.ini',$configSection);
Zend_Registry::set('config',$config);
date_default_timezone_set($config->date_default_timezone);
//Database configuration settings go here. :)
$db = Zend_Db::factory($config->db);
Zend_Db_Table_Abstract::setDefaultAdapter($db);
Zend_Registry::set('db',$db);
}
public function configureFrontController(){
$frontController = Zend_Controller_Front::getInstance();
$frontController->setControllerDirectory(ROOT_DIR . '/application/controllers');
}
public function runApp(){
$this->configureFrontController();
//Runs the Zend application. :)
$frontController = Zend_Controller_Front::getInstance();
$frontController->dispath();
}
}
Я пытаюсь следовать руководству, в котором я хочу настроить приложение Zend на использование функций автозагрузки, которые оно предлагает.
При использовании метода registerAutoLoad () я получаю устаревшее предупреждение, и оно говорит мне использовать другой метод, тот, что ниже в моем коде.
Что я могу сделать?
Редактировать: Почему я использовал устаревший метод:
Один далеко не идеальный аспект
загрузочный файл в оригинальном Hello
Мир в том, что есть много
Zend_Loader :: loadClass () вызывает для загрузки
до классов, которые нам нужны, прежде чем мы используем
их.
В больших приложениях есть даже
больше классов в использовании, в результате чего
беспорядок на протяжении всего приложения
просто чтобы убедиться, что правильные занятия
включены в нужное время.
Для нашего сайта Places мы используем PHP
__autoload (), чтобы PHP автоматически загружал наши классы
для нас. PHP5 представил
__autoload () магическая функция, которая вызывается всякий раз, когда вы пытаетесь создать экземпляр
класс, который еще не был определен.
Класс Zend_Loader имеет специальный
метод registerAutoload () специально
для использования с __autoload (), как показано в
листинг 3.1 б. Этот метод будет
автоматически использовать PHP5 Standard PHP
Библиотека (SPL) spl_autoload_register ()
функционировать так, чтобы несколько автозагрузчиков
может быть использован.
После Zend_Loader :: registerAutoload ()
был вызван, когда класс
экземпляр, который еще не был
определен, файл, содержащий класс
Включено. Это решает проблему
беспорядка Zend_Loader :: loadClass ()
и гарантирует, что только необходимые файлы
загружаются для любого данного запроса.