johniek_comp
19.03.2012 - 18:43
Сразу в код:
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/...
как быть что бы маг. метод знал с какой папки подключать?
_____________
примерно так
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);
}
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
johniek_comp
19.03.2012 - 20:25
twinВ таком случае вообще ничего находить не будет, сделал по-другому: контроллеры называют теперь так Controller_Login.phpЮ ну и class_user.php , в зависимости от названия подключаю нужный файл
_____________
А, ясно. Вот это вообще зачем:
if ( file_exists($file) )
? Что будет, если фйла нет?
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
johniek_comp
20.03.2012 - 14:57
twinЭто модель, тут все под моим контролем, а file_exists нужен мне для отладки
_____________
$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)
ADiel
Ну ты понаворотил)))
johniek_comp
Цитата |
file_exists нужен мне для отладки |
Ерунду говоришь. Эта хрень как раз вредит отладке. Не будет файла в папке, будет ошибка, что нет
класса. А если без неё - будет ошибка, что нет
файла. Так что это не отладка, а так, понты. Пользы от этой проверки нет никакой. А вред очевиден - нельзя применить цивилизованный ini_set().
Хотя дело хозяйское, каждый сходит с ума по своему.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Игорь_Vasinsky
21.03.2012 - 07:42
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
Есть хостинги, где ini_set запрещен. Так же на винде слэши в другую сторону (не считая денвера) Так что я написал некий нубский вариант, т.к. нормальный вариант уже написан в теме
_____________
Ищи меня тут (ilyaplot)