|
Абырвалг ↓
|
 |
|
15 Июнь, 2010, 11:36:12
|
НЕ ХУЕТА!
ХУЕТА!
|
PHP Infected, симфоеб, маконенавистник
Группа: Джедаи Карма: 80
Сообщений: 6096 Сила слова: 1.31
|
Есть лоадер, который кидает исключение если класс не был найден.
Когда я делаю new 'BL_Class_Not_Found' - исключение бросать нужно (оно и бросается). Но при class_exists('BL_Class_Not_Found') исключение бросать не нужно.
Как быть:
1) внутри лоадера бектрейсом смотреть наличие class_exists?
2) оборачивать class_exists try-catch?
|
|
|
|
|
Записан
|
PHP does the job since 1995 Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
|
|
|
|
artoodetoo ↓
|
 |
|
15 Июнь, 2010, 12:08:43 , спустя 32 минуты 31 секунду
|
НЕ ХУЕТА!
ХУЕТА!
|
с особым цинизмом
Группа: в ухо Карма: 124
Сообщений: 3805 Сила слова: 3.26
|
тебе не надо самому вызывать исключение в автолоадере. не найден и ладно. дальше не его забота. а для class_exists указывай необязательный параметр autoload. Спустя 47 секунд добавил проще будь, короче. тогда не будет проблемм.
|
|
|
|
|
Записан
|
|
|
|
|
Абырвалг ↓
|
 |
|
15 Июнь, 2010, 12:19:44 , спустя 11 минут 1 секунду
|
НЕ ХУЕТА!
ХУЕТА!
|
PHP Infected, симфоеб, маконенавистник
Группа: Джедаи Карма: 80
Сообщений: 6096 Сила слова: 1.31
|
а для class_exists указывай необязательный параметр autoload.
он по умолчанию Ъ, что мне и нужно
тебе не надо самому вызывать исключение в автолоадере
да ну... Имхо все логично - попытался загрузить класс, которого нет - бамц тебе искл. Ибо иначе будет просто фаталл: не могу создать инстанцию класса, которого нет (а в фатале я бектрейс не могу получить)
|
|
|
|
|
Записан
|
PHP does the job since 1995 Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
|
|
|
|
artoodetoo ↓
|
 |
|
15 Июнь, 2010, 01:06:46 , спустя 47 минут 2 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
с особым цинизмом
Группа: в ухо Карма: 124
Сообщений: 3805 Сила слова: 3.26
|
да ну... Имхо все логично - попытался загрузить класс, которого нет - бамц тебе искл. Ибо иначе будет просто фаталл: не могу создать инстанцию класса, которого нет (а в фатале я бектрейс не могу получить)
видишь ли, это и в самом деле фатально :)) если нет класса, с которым тебе хочется работать — сушите весла. это не лечится.
|
|
|
|
|
Записан
|
|
|
|
|
artoodetoo ↓
|
 |
|
15 Июнь, 2010, 01:18:57 , спустя 12 минут 11 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
с особым цинизмом
Группа: в ухо Карма: 124
Сообщений: 3805 Сила слова: 3.26
|
но если тебе хочется перехитрить самого себя - используй class_exists(classname, TRUE) и потом, если хочешь, генерируй исключение. вне автолоадера
|
|
|
|
|
Записан
|
|
|
|
|
Абырвалг ↓
|
 |
|
15 Июнь, 2010, 01:20:14 , спустя 1 минуту 17 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
PHP Infected, симфоеб, маконенавистник
Группа: Джедаи Карма: 80
Сообщений: 6096 Сила слова: 1.31
|
оно понятно, но мне нужен эксепшн а не фатал (хотя бы из-за бектрейса).
Короче лана, забейте, проблема высосана из пальца Спустя 17 секунд добавил вне лоадера - не хочу
|
|
|
|
|
Записан
|
PHP does the job since 1995 Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
|
|
|
|
artoodetoo ↓
|
 |
|
15 Июнь, 2010, 01:25:17 , спустя 5 минут 3 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
с особым цинизмом
Группа: в ухо Карма: 124
Сообщений: 3805 Сила слова: 3.26
|
это твоё дело.
imho, фатальное это фатальное. пропущенная скобка — это фатально. опечатка в имени класса то же самое.
|
|
|
|
|
Записан
|
|
|
|
|
Абырвалг ↓
|
 |
|
15 Июнь, 2010, 05:26:47 , спустя 4 часа 1 минуту 30 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
PHP Infected, симфоеб, маконенавистник
Группа: Джедаи Карма: 80
Сообщений: 6096 Сила слова: 1.31
|
бектрейс
распечатай мне бектрейс после фатал эррора?
|
|
|
|
|
Записан
|
PHP does the job since 1995 Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
|
|
|
|
master ↓
|
 |
|
15 Июнь, 2010, 11:19:21 , спустя 5 часов 52 минуты 34 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
Квадратов сколько видишь ты?
Группа: Джедаи Карма: 44
Сообщений: 2080 Сила слова: 2.12
|
я кладу по одному классу в файл, и если файл не найден (!is_file()) печатаю бэктрейс
|
|
|
|
|
Записан
|
|
|
|
|
phpdude ↓
|
 |
|
15 Июнь, 2010, 11:22:12 , спустя 2 минуты 51 секунду
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 345
Сообщений: д-о-х-у-я! Сила слова: 1.66
|
master, у главрыбы (прости что так называю, но абырвалгом язык не поворачивается назвать, хотя главрыба в моей исторической линии тоже уныло - у меня был сосед в общаге по фамилии Фиш :D, но как грится из двух зол) проблема в том, что автолоад то есть, что он файлы то на ексист то проверят, но! видимо (насоклько я понял) class_exists вызывает тоже автолоад, что в принципе понятно) и у него этот ексепшн вываливается :))
|
|
|
|
|
Записан
|
забанен. могу забанить других, пишите в личку BEER. Helping ugly people have sex since 1862.
|
|
|
|
master ↓
|
 |
|
15 Июнь, 2010, 11:37:02 , спустя 14 минут 50 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Квадратов сколько видишь ты?
Группа: Джедаи Карма: 44
Сообщений: 2080 Сила слова: 2.12
|
phpdude,
честно говоря не пойму зачем такое надо. обычно class_exists используется перед include
if (!class_exists('Foo', true)) include 'Foo.php';
причём принудительно указывается второй параметр, чтобы class_exists не вызывал __autoload. потому что если class_exists (подразумевающий что не все классы могут быть загружены автоматически) будет вызывать __autoload, это рано или поздно приведёт к фаталу.
|
|
|
|
|
Записан
|
|
|
|
|
kostyl ↓
|
 |
|
15 Июнь, 2010, 11:44:17 , спустя 7 минут 15 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
занедельный антипаттерн
Группа: Джедаи Карма: 60
Сообщений: 3526 Сила слова: 1.7
|
Короче лана, забейте, проблема высосана из пальца
|
|
|
|
|
Записан
|
качество жизни обратно пропорционально количеству лени
|
|
|
|
phpdude ↓
|
 |
|
15 Июнь, 2010, 11:52:31 , спустя 8 минут 14 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 345
Сообщений: 20793 Сила слова: 1.66
|
master, я думаю тут дело не в этом чуток, там ипа расширяемости была идея, хотя может я неправ.
ну типа
if(class_exists("myclass_extension")) ... $extension->create($this);
|
|
|
|
|
Записан
|
забанен. могу забанить других, пишите в личку BEER. Helping ugly people have sex since 1862.
|
|
|
|
Абырвалг ↓
|
 |
|
16 Июнь, 2010, 04:05:42 , спустя 16 часов 13 минут 11 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
PHP Infected, симфоеб, маконенавистник
Группа: Джедаи Карма: 80
Сообщений: 6096 Сила слова: 1.31
|
проблема в том, что автолоад то есть, что он файлы то на ексист то проверят, но! видимо (насоклько я понял) class_exists вызывает тоже автолоад, что в принципе понятно) и у него этот ексепшн вываливается :))
100% понимание того, че я хотел. При class_exists автолоад нужен, но эксепшен не нужен.
|
|
|
|
|
Записан
|
PHP does the job since 1995 Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
|
|
|
|
kostyl ↓
|
 |
|
16 Июнь, 2010, 04:33:35 , спустя 27 минут 53 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
занедельный антипаттерн
Группа: Джедаи Карма: 60
Сообщений: 3526 Сила слова: 1.7
|
Абырвалг, так слови исключение, проблема то... или тебе это кажется не красивым? )
|
|
|
|
|
Записан
|
качество жизни обратно пропорционально количеству лени
|
|
|
|