Форум → Программирование → PHP для идиотов → Не бросать искл. при class_exists (spl_autoload_call)
Не бросать искл. при class_exists (spl_autoload_call)
Страницы: ← Следующая страница →
-
Есть лоадер, который кидает исключение если класс не был найден.
Когда я делаю new 'BL_Class_Not_Found' - исключение бросать нужно (оно и бросается). Но при class_exists('BL_Class_Not_Found') исключение бросать не нужно.
Как быть:
1) внутри лоадера бектрейсом смотреть наличие class_exists?
2) оборачивать class_exists try-catch? -
15 июня 2010 г. 12:08, спустя 32 минуты 31 секунду
тебе не надо самому вызывать исключение в автолоадере. не найден и ладно. дальше не его забота. а для class_exists указывай необязательный параметр autoload.Спустя 47 сек.проще будь, короче. тогда не будет проблемм.ιιlllιlllι унц-унц -
15 июня 2010 г. 12:19, спустя 11 минут 1 секунду
а для class_exists указывай необязательный параметр autoload.
он по умолчанию Ъ, что мне и нужнотебе не надо самому вызывать исключение в автолоадере
да ну… Имхо все логично - попытался загрузить класс, которого нет - бамц тебе искл. Ибо иначе будет просто фаталл: не могу создать инстанцию класса, которого нет (а в фатале я бектрейс не могу получить) -
15 июня 2010 г. 13:06, спустя 47 минут 2 секунды
да ну… Имхо все логично - попытался загрузить класс, которого нет - бамц тебе искл. Ибо иначе будет просто фаталл: не могу создать инстанцию класса, которого нет (а в фатале я бектрейс не могу получить)
видишь ли, это и в самом деле фатально :)) если нет класса, с которым тебе хочется работать — сушите весла. это не лечится.ιιlllιlllι унц-унц -
15 июня 2010 г. 13:18, спустя 12 минут 11 секунд
но если тебе хочется перехитрить самого себя - используй class_exists(classname, TRUE) и потом, если хочешь, генерируй исключение. вне автолоадераιιlllιlllι унц-унц -
15 июня 2010 г. 13:20, спустя 1 минуту 17 секунд
оно понятно, но мне нужен эксепшн а не фатал (хотя бы из-за бектрейса).
Короче лана, забейте, проблема высосана из пальцаСпустя 17 сек.вне лоадера - не хочу -
15 июня 2010 г. 13:25, спустя 5 минут 3 секунды
это твоё дело.
imho, фатальное это фатальное. пропущенная скобка — это фатально. опечатка в имени класса то же самое.ιιlllιlllι унц-унц -
15 июня 2010 г. 17:26, спустя 4 часа 1 минуту 30 секунд
бектрейс
распечатай мне бектрейс после фатал эррора? -
15 июня 2010 г. 23:19, спустя 5 часов 52 минуты 34 секунды
я кладу по одному классу в файл, и если файл не найден (!is_file()) печатаю бэктрейсне всё полезно, что в swap полезло -
15 июня 2010 г. 23:22, спустя 2 минуты 51 секунду
master, у главрыбы (прости что так называю, но абырвалгом язык не поворачивается назвать, хотя главрыба в моей исторической линии тоже уныло - у меня был сосед в общаге по фамилии Фиш :D, но как грится из двух зол) проблема в том, что автолоад то есть, что он файлы то на ексист то проверят, но! видимо (насоклько я понял) class_exists вызывает тоже автолоад, что в принципе понятно) и у него этот ексепшн вываливается :))Сапожник без сапог -
15 июня 2010 г. 23:37, спустя 14 минут 50 секунд
phpdude,
честно говоря не пойму зачем такое надо. обычно class_exists используется перед include
if (!class_exists('Foo', true)) include 'Foo.php';
причём принудительно указывается второй параметр, чтобы class_exists не вызывал __autoload. потому что если class_exists (подразумевающий что не все классы могут быть загружены автоматически) будет вызывать __autoload, это рано или поздно приведёт к фаталу.не всё полезно, что в swap полезло -
-
15 июня 2010 г. 23:52, спустя 8 минут 14 секунд
master, я думаю тут дело не в этом чуток, там ипа расширяемости была идея, хотя может я неправ.
ну типа
if(class_exists("myclass_extension")) … $extension->create($this);Сапожник без сапог -
16 июня 2010 г. 16:05, спустя 16 часов 13 минут 11 секунд
проблема в том, что автолоад то есть, что он файлы то на ексист то проверят, но! видимо (насоклько я понял) class_exists вызывает тоже автолоад, что в принципе понятно) и у него этот ексепшн вываливается :))
100% понимание того, че я хотел. При class_exists автолоад нужен, но эксепшен не нужен. -
16 июня 2010 г. 16:33, спустя 27 минут 53 секунды
Абырвалг, так слови исключение, проблема то… или тебе это кажется не красивым? )
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!