В моем include_path на стороне сервера у меня есть ссылка на каталог груши в '/ usr/share/pear /'. В моих приложениях я включаю файлы из общей библиотеки, живущие в '/ usr/share/pear/library /' с require_once 'library/file.php'
.SPL Автозагрузка лучших практик
Я недавно начал использовать автозагрузчик spl, я заметил, что в функции загрузчика вы должны определить логику, с помощью которой можно включить файл. Мой первый способ сделать это - попытаться включить файл и подавить его с помощью @
, чтобы узнать, не сработает ли он, например. @include 'library/file.php'
Однако я думаю, что в основном потому, что я много читал о @
, будучи плохой практикой, я решил вручную выполнить эту работу самостоятельно, взорвав get_include_path
PATH_SEPARATOR
и посмотрев, является ли каталог тем, чем я хочу быть, а затем делает file_exists
и в том числе ,
Как так:
function classLoader($class) {
$paths = explode(PATH_SEPARATOR, get_include_path());
$file = SITE_PATH . 'classes' . DS . $class . '.Class.php';
if (file_exists($file) == false)
{
$exists = false;
foreach ($paths as $path)
{
$tmp = $path . DS . 'library' . DS . 'classes' . DS . $class . '.Class.php';
if (file_exists ($tmp))
{
$exists = true;
$file = $tmp;
}
}
if (!$exists) { return false; }
}
include $file;
}
spl_autoload_register('classLoader');
ли я пойти неправильный путь? Должен ли я просто сделать бизнес @include
, или я делаю это несколько в правильном направлении?
Не является ли автозагрузчик более практичным и современным методом? Или это в основном одно и то же? –