Цитата (icedfox @ 22.09.2015 - 11:25) |
Смарти может подключать большое количество дополнительных классов, в зависимости от потребности в них, инклудить пачку из 70 файлов ради того, что бы сэкономить на одной регулякре разве не больший хардкор ? |
include_once(SMARTY_DIR_LIB. 'Smarty.class.php');
spl_autoload_register(function ($className) {Это кривая реализация, только чтобы суть понятна была. Но работать наверняка будет.
.
.
.
);
spl_autoload_register(
function ($className)
{
set_include_path(SMARTY_DIR_LIB);
spl_autoload($className, '.class.php');
}
);
Цитата |
Данный код позволяет мне иметь имена файлов более привычные и понятные для меня, имея при этом нормальные имена в названии самих классов. |
Цитата (bestxp @ 22.09.2015 - 12:01) |
psr-0 psr-4 включая реализацию, остальное велосипед |
spl_autoload_register(function ($className) {
// для сматри используем отдельное подключение, указываем расположение физически
// определяем сматри через регулярку по начальному признаку
if (preg_match('/^smarty_\w+$/i', $className)) {
$fileName = SMARTY_DIR_LIB. '/sysplugins/' .$className. '.php';
} else {
$classPath = func_get_class_path($className);
$fileName = ROOT_DIR . DIRSEP . $classPath;
}
if (!file_exists($fileName)) {
throw new excep_code ("Ошибка подключения класса [ {$fileName} ] через spl_autoload_register", 404);
} else {
/** @noinspection PhpIncludeInspection */
require_once $fileName;
}
});
Цитата (twin @ 22.09.2015 - 18:28) |
Это тоже слабый аргумент. Совсем не обязательно регулярки городить. Нужно просто углубиться в матчасть. |
Цитата (icedfox @ 22.09.2015 - 12:53) |
По моему, почти то же что и вы предложили :D |
if (preg_match('/^smarty_\w+$/i', $className)) {не работает вообще. Для интереса можете закомментить.
$fileName = SMARTY_DIR_LIB. '/sysplugins/' .$className. '.php';
}
Цитата |
else { $classPath = func_get_class_path($className); $fileName = ROOT_DIR . DIRSEP . $classPath; } |
Цитата (twin @ 22.09.2015 - 19:00) |
не работает вообще. Для интереса можете закомментить. |
D:\\OpenServer\www\test.ru\Smarty_Internal_Debugsmarty_internal_debug.php
D:\\OpenServer\www\test.ru\app\views\smarty\libs\sysplugins\Smarty_Internal_Debug.php
Цитата (icedfox @ 22.09.2015 - 13:19) |
при отключенной регулярке получаем попытку инклуда файла |
spl_autoload_register(function ($className) {Наверняка на работоспособности сайта это не отразится.
// для сматри используем отдельное подключение, указываем расположение физически
// определяем сматри через регулярку по начальному признаку
//if (preg_match('/^smarty_\w+$/i', $className)) {
// $fileName = SMARTY_DIR_LIB. '/sysplugins/' .$className. '.php';
//} else {
$classPath = func_get_class_path($className);
$fileName = ROOT_DIR . DIRSEP . $classPath;
//}
if (!file_exists($fileName)) {
throw new excep_code ("Ошибка подключения класса [ {$fileName} ] через spl_autoload_register", 404);
} else {
/** @noinspection PhpIncludeInspection */
require_once $fileName;
}
});