sverel
Новичок
Постоянно в сторонних библиотеках вижу require 'some/class.php', но не понимаю: зачем это нужно, когда есть autoload?
Любая серьёзная библиотека (тем более фреймворк) может правильно именовать файлы и раскидывать их по папкам, что бы они автоматически подключались:
Вчера подключил к своему сайту PHPExcel и там точно такая же ф-ция. Наши с ним ф-ции автолоада работают последовательно. Всё получается максимально правильно, ведь классы подключаются "по требованию".
Но в большинстве сторонних библиотек я встречаю либо подключение классов "всегда вначале скрипта/функции" - что само по себе избыточно:
Или дублирование кода:
Это выглядело нормально нормально во времена php4 (например, PEAR). Но почему это использует ZF? Разве у такого подхода есть какие-либо плюсы перед autoload? По моему, ZF работал бы шустрее, если бы не страдал повсеместными require_once(), imho.
Любая серьёзная библиотека (тем более фреймворк) может правильно именовать файлы и раскидывать их по папкам, что бы они автоматически подключались:
PHP:
myAutoload($className)
{
$path = str_replace('_', '/', $className);
}
Но в большинстве сторонних библиотек я встречаю либо подключение классов "всегда вначале скрипта/функции" - что само по себе избыточно:
PHP:
function someFunc($x)
{
require_once 'lib/config/exception.php';
if ($x === 100) {
throw new config_exception();
}
}
PHP:
if (...) {
require_once 'lib/config/exception.php';
....
} elseif (....) {
require_once 'lib/config/exception.php';
} else {
// Тут не подключается
}