Новости | Документация | Download | Webboard | FAQ | Поиск | Контакты


Автоматическая загрузка объектов

Большинство разработчиков объектно-ориентированных приложений создают для каждого определения класса отдельный файл с кодом PHP. Одной из самых больших неприятностей в этом случае является необходимость писать в начале каждого скрипта длинный список подгружаемых файлов.

Если используется PHP 5, то делать это не обязательно. Вы можете определить функцию __autoload, которая автоматически вызывается в том случае, когда вы пытаетесь использовать класс/интерфейс, который не был определен ранее. Вызов этой функции - это последний шанс для интерпретатора загрузить класс прежде, чем он закончит выполнение скрипта с ошибкой.

Замечание: Исключения, вызванные в функции __autoload, не могут быть перехвачены в блоке catch и завершатся с неисправимой ошибкой.

Замечание: Автоматическая загрузка не доступна в случае использования PHP в командной строке в интерактивном режиме.

Замечание: Если имя класса используется, например, для вызова через call_user_func(), то оно может содержать некоторые опасные символы, такие как ../. Поэтому, рекомендуется не использовать данные от пользователей в таких функциях или же, как минимум, проверять значения в __autoload().

Пример #1 Пример автоматической загрузки

В этом примере функция пытается загрузить классы MyClass1 и MyClass2 из файлов MyClass1.php и MyClass2.php соответственно.

<?php
function __autoload($class_name) {
    require_once 
$class_name '.php';
}

$obj  = new MyClass1();
$obj2 = new MyClass2(); 
?>

В этом примере представлена попытка загрузки интерфейса ITest.

<?php

function __autoload($name) {
    
var_dump($name);
}

class 
Foo implements ITest {
}

/*
string(5) "ITest"

Fatal error: Interface 'ITest' not found in ...
*/
?>






  Copyright Apache.ru © 1999-2017, All Rights Reserved Разработка сайта: Inside.ru  
  РЕКЛАМА НА САЙТЕ: |