[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Разница между self и $this в классах
Страницы: 1, 2
Astin
Спасибо killer8080 уже читаю про эту функцию
Astin
Какая классная функция __autoload и как удобно

Получается создал одну папку с классами и файл автолоада и все

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

На самом деле удобно, чем все время инклудить каждые класс перед тем как
создать его объект

Только вот немного не допонял функцию spl_autoload_register

Для чего она конкретно нужна, читаю про нее в мануале и толком не пойму что к чему
Astin
А, вот понял. Если я подключаю класс не через __autoload, а через функцию,
то мне нужно ее зарегистрировать чтобы использовать эту функцию в __autoload
Astin
И вот еще что интересно

Возьмем пару примеров с spl_autoload_register и без
Первый
function lod($classname)
{
$filename = dirname(__FILE__).DIRECTORY_SEPARATOR.strtolower($classname).'.php';
if (is_readable($filename)) {
require $filename;
}
}


spl_autoload_register('lod');

function __autoload($classname)
{
lod($classname);
}

Второй
function lod($classname)
{
$filename = dirname(__FILE__).DIRECTORY_SEPARATOR.strtolower($classname).'.php';
if (is_readable($filename)) {
require $filename;
}
}


function __autoload($classname)
{
lod($classname);
}


Что первый что второй вариант срабатывают без ошибок, так в чем смысл
функции spl_autoload_register?

Она что, своего рода создает очередь загрузки классов?

И что будет если spl_autoload_register не использовать при подключении
нескольких классов в одном файле
Astin
Ну вот вроде врубился что к чему. В скриптах выше в первом примере
можно было и не использовать __autoload, так как я зарегистрировал свой загрузчик.

__autoload можно использовать если версия PHP старая, но если версия PHP, к примеру
выше чем 5.3 то лучше использовать spl_autoload_register, так как в мануале написано
что функция __autoload в будущем может перестать поддерживаться или быть удалена
Из мануала
Цитата
Подсказка
spl_autoload_register() предоставляет более гибкую альтернативу для автоматической загрузки классов. По этой причине использовать __autoload() не рекомендуется, а сама функция в будущем может перестать поддерживаться или быть удалена.


Ну и соответственно я сварганил вот такой велосипед
function Autoload($classname)
{
$files = dirname(__FILE__).DIRECTORY_SEPARATOR.strtolower($classname).'.php';
if (is_readable($files)) {
require $files;
}
}



if (version_compare(PHP_VERSION, '5.3.0', '>='))
{
spl_autoload_register('Autoload');

} else {

function __autoload($classname)
{
Autoload($classname);
}
}


Если версия PHP больше или равна 5.3 то регистрируем свой автозагрузчик
иначе используем старую функцию __autoload

Думаю для понимания функций __autoload и spl_autoload_register я дошел.

И теперь интересно, для чего регистрируют несколько автозагрузчиков?

Кто может ответить на этот вопрос, для чего это нужно



Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.