Приднестровская поддержка XOOPS
В PHP 4 при создании классов у разработчиков не было доступного механизма автоматической загрузки определенного класса по требованию. Если бы в своих сценариях вы потенциально могли зависеть от класса, то вам пришлось бы включать его с самого начала создания своего приложения, независимо от того, был ли он нужен или нет. В PHP 5 все иначе: вы можете определить функцию для загрузки классов по мере необходимости. Это функция __autoload(); она имеет следующий прототип:
function __autoload( $classname );
где $classname — это имя класса, который PHP не может найти. В функцию __autoload() можно добавить любую логику для определения местоположения класса и его загрузки. Благодаря этому можно быстро и легко осуществить удаленную загрузку классов из базы данных, файловой системы и тому подобного. Единственное, что необходимо сделать в случае использования этой функции, это загрузить класс в PHP (обычно с помощью оператора require_once()) до окончания вызова функции. Если класс не был загружен до завершения выполнения функции __autoload() (или если функция __autoload() не была определена), PHP завершит выполнение сценария и выведет сообщение о невозможности найти определенный класс.
В качестве примера использования функции __autoload() рассмотрим листинг 23.
Листинг 23.
function __autoload($class) {
$files = array( 'MyClass' => "/path/to/myClass.class.php", 'anotherClass'
=> "/path/to/anotherClass.class.php" );
if( ! isset( $files[ $class ] ) ) return;
require_once( $files[ $class ] );
}
$a = new MyClass;
$b = new anotherClass;
В листинге 23 функция __autoload() используется для загрузки классов, определяя их местоположение в заранее заданном ассоциативном массиве. Поскольку классы MyClass и anotherClass еще не были определены в сценарии, в обоих случаях будет вызываться функция __autoload(), для того чтобы сценарий самостоятельно смог найти требуемый класс.
Отправитель | Нити |
---|
4 пользователь(ей) активно (2 пользователь(ей) просматривают Инструкции)
Участников: 0 Гостей: 4 далее... |