[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: __autoload в двойне
johniek_comp
Сразу в код:
function __autoload($class_name) { 
$file = $_SERVER['DOCUMENT_ROOT'] . '/classes/'.$class_name.'.php';

if ( file_exists($file) ) include_once($file);
}
route::delegate();


теперь route::delegate(); возвращает мне новый класс(контроллер) который должен подключится через __autoload, но! классы у меня в classes/, а контроллеры в controllers/...

как быть что бы маг. метод знал с какой папки подключать?

_____________
user posted image
twin
примерно так
function __autoload($class_name) { 
ini_set('include_path', $_SERVER['DOCUMENT_ROOT'] .'/classes');
ini_set('include_path', $_SERVER['DOCUMENT_ROOT'] .'/controllers');

$file = $class_name.'.php';

if ( file_exists($file) ) include_once($file);
}


_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
johniek_comp
twin
В таком случае вообще ничего находить не будет, сделал по-другому: контроллеры называют теперь так Controller_Login.phpЮ ну и class_user.php , в зависимости от названия подключаю нужный файл

_____________
user posted image
twin
Цитата (johniek_comp @ 19.03.2012 - 16:25)
В таком случае вообще ничего находить не будет

А ты пробовал?

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
johniek_comp
twin
Конечно smile.gif

_____________
user posted image
twin
А, ясно. Вот это вообще зачем:
if ( file_exists($file) )
? Что будет, если фйла нет?

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
johniek_comp
twin
Это модель, тут все под моим контролем, а file_exists нужен мне для отладки smile.gif

_____________
user posted image
ADiel
$map = array('classes','controllers');
foreach($map as $folder){
$filename = $_SERVER['DOCUMENT_ROOT'] .DIRECTORY_SEPARATOR.$folder.DIRECTORY_SEPARATOR.$class_name.".php";
if (file_exist($filename)){
include_once($filename);
return true;
}
}

return false;


_____________
Ищи меня тут (ilyaplot)
twin
ADiel
Ну ты понаворотил)))

johniek_comp
Цитата
file_exists нужен мне для отладки
Ерунду говоришь. Эта хрень как раз вредит отладке. Не будет файла в папке, будет ошибка, что нет класса. А если без неё - будет ошибка, что нет файла. Так что это не отладка, а так, понты. Пользы от этой проверки нет никакой. А вред очевиден - нельзя применить цивилизованный ini_set().

Хотя дело хозяйское, каждый сходит с ума по своему.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Игорь_Vasinsky
ADiel
Все давно пофиг на эту константу DIRECTORY_SEPARATOR

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
ADiel
Есть хостинги, где ini_set запрещен. Так же на винде слэши в другую сторону (не считая денвера) Так что я написал некий нубский вариант, т.к. нормальный вариант уже написан в теме

_____________
Ищи меня тут (ilyaplot)
Быстрый ответ:

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