правильно понимаю что тут просто лог ошибок разных? ну тогда вы мой герой, так пафосно представить велосипед…
1. какой толк от ООП если используется туева хуча констант и фсе?
2. какое отношение лог ошибок имеет к «отладке с закрытыми глазами»?
3. есть интеграция с чем-либо?
Ну смотря что понимать под «просто лог ошибок разных». Я считаю, что тут не просто лог, и не просто ошибок разных.
1. В константы если не поняли я просто для примера вынес
2. Отладка понятие растяжимое, в частности речь идёт об обработке ошибок и дебаге
3. Интеграция с чем? С фреймворками другими интеграции нету. Он изначально абсолютно standalone и быстро прикручиваемый чтобы каждый его использовал как хотел.
Сравнили тоже.
xdebug главным образом ориентирован на профайлинг (выявление узких мест в производительности).
А как вы будете под ним на AJAX-е отлаживаться?
А уведомления на Email/SMS он умеет?
А как вы его вообще сможете использовать если VPS хостинг и он у них не установлен как расширение к PHP?
во-первых с помощью xdebug и нормальной IDE можно поставить брейкпоинт на нужной строчке кода, пошагово выполнить код, мониторя при этом значения переменных. лично у меня с термином «отладка» ассоциируется именно этот процесс.
во-вторых отлаживать проект на хостинге попахивает маразмом, отлаживать его надо до выпуска в продакшн.
в-третьих какая раздница, аяксовый запрос или нет, пхп-скрипт запускается всегда одинаково
а то, про что вы написали, это лишь средство регистрации ошибок. никакого отношения к отладке оно не имеет, ну разве что косвенное, ведь получив уведомление, узнаешь, где искать ошибку и какой кусок кода надо отлаживать
Отладка не ограничивается трейсами и профайлингом.
Бибилотеки трейса и профайлинга вообще на PHP противопоказано писать т.к. слишком много издержек и большая погрешность получается. Для этих целей нужно расширения всякие типа XDebug использовать.
Может мне тогда надо было сперва с объяснения синтаксиса PHP начать?
Я то думал на хабре народ достаточно сообразительный, чтобы без комментариев разобраться.
Код кстати и так самодокументируемый(по одним названиям можно всё понять), это вам не ассэмблер.
Да какая разница что в качестве конфигурации использовать? XML/ini/константы/базу данных — для особо извращённых, вы ключевое слово «Пример» прочитали?
Ну судя по рейтингу и карме, не такой уж я и тролль(не супер конечно, но в плюсе).
Конечно же лучшая оборона — нападение, вместо того чтобы говорить по существу начался переход на личности.
Просто все плачут что много говнокода вокруг и сами же его выставляют на всеобщее обозрение, этот пост прочитают многие начинающие программисты и решат что «так и надо писать». Не думаю что сложнее будет хранить данные в том же CSV формате, а будет намного нагляднее(меньше времени на просмотр займёт) + меньше места займёт(это не совсем важно в наши дни, но всё же).
я считаю что мой код далеко не «гавно», см. исходники(вы их наверняка даже в глаза не видели)
очень огорчает что на хабре народ в основном делится на пассивных читателей и активных критиков-нытиков. т.е. вот за 2 дня публикации статьи было скачано 50 копий Lagger-а, я даже лично знаю несколько человек, которые теперь внедрили его в свои проекты и остались очень довольны
а народ тут пишет про какие-то трейсеры, профайлеры… ей богу, что за бестолковое сравнение? плюсуют по сути идиотские комменты, по инерции минусуют ответы…
а ведь была проделана большая работа, но тут все такие самые умные, что помимо неконструктивной критики ничего и сказать не могут! хоть бы кто написал, что архитектура библиотеки неправильная или ещё что-то не оптимально сделано, так нет ведь — даже исходников не видели, даже примеры невнимательно просмотрели, а уже чешут руки написать какой-нить злостный коммент))
короче от этой статьи у меня карма только пострадала, но всё равно я буду дальше писать, потому что знаю что большинству мои библиотеки очень помогают в работе… а то, что из 10 возмущённых мнение выскажут все 10, в то время как из 10 довольных только 1-2, то это и ежу понятно
Я думаю по моему профилю более менее понятно, касательно моих предпочтний, мне исходники были в приницпе неинтересны, потому что мне язык php не нравиться как таковой (причём по многим причинам и вполне обоснованным). Я посмотрел просто как же дебажат в другом ЯП, мне интересны сами принципы, ибо языки разные, а методы в основном похожи.
В моём первоначальном комменте я рассчитывал вложить «удивление», нежели какие-то негативные чувства.
Могу поспорить что многие не дошли до исходников именно по той же причине, что я обозначил. Пример кода начинаеться с неудобоваримого конфига, собственно вполне интуитивно возникает стереотип некоторого «говнокода» касательно всего оставшегося.
А насчёт того, почему не пишу… просто пока времени нету, пару тем классных придумал, даже есть набросок, но никак руки не дойдут…
вот насчет ошибок в php. я сам немного в другой области специализируюсь, посему хочу спросить:
как мне найти ошибку в синтаксисе файла, который подключен по include?
Естественно, это покажет мне только ошибки для конкретного файла и только для конкретного вызова. А как мне это дело унифицировать?
Заморачиваться на различные дебаггеры и профилировщики не очень хочется. Нет ли какого-нибудь решения, которое просто выведет мне ошибку вверху страницы и прекратит выполнение?
Красивая страница «Упс, что-то случилось!» и попадение ошибки в бд меня не очень интересует: я чаще допускаю просто синтаксические ошибки и мне хочется видеть их при обращении к странице.
Насколько понимаю, ключ решения в правильной конфигурации php. Не подскажете, что надо настроить?
Интересно, а как эта библиотека отлавливает ошибки уровней E_FATAL & E_COMPILE? Насколько я знаю при фатальных ошибках php записывает данные об ошибке в файл (указанный в php.ini) и прекращает работу, не давая эту ошибку обработать.
P.S. дефайны и глобалс реальное зло!
ну… как-то отлавливает(см. исходники), стандартными средствами php без каких либо извратов типа парсинга STDOUT
константы это для примера если не поняли, можете их не использовать. а $GLOBALS по мере необходимости, тоже для примера.
можете и без него свою класс-синглтон обёртку для Lagger_Handler_Debug написать, только чего ради))
Хотя бы ради того что-бы не нарушать концепцию лаконичного 100%-го ООП PHP5 кода. Да и смотрелось бы оно гораздо приятнее в виде отдельного класса, который кстати можно было бы включить в проект в качестве примера.
У библиотеки есть своя концепция и ваше мнение с ней противоречит.
Она подразумевает, что в один момент времени может существовать более 1 обработчика (что актуально в сложных системах, в которых на разных уровнях могут разные обработчики с несовместимыми конфигурациями).
Класс-синглтон-обётка для дебагера пишется за 30 секунд, а вы на одну только эту переписку со мной в 5 раз больше времени потратили :)
Не обязательно делать синглтон. Можно просто класс обертку-иницилазатор, все равно смотрелся бы он лучше чем портянка кода с кучей констант. Просто код из примера совсем не ООП стиль :)
Библиотека на 100% ООП, а вот способы её использования уж точно не обязаны в концепции ООП вписываться :)
Примеры использования это совсем другой уровень, там каждый изголяется как ему удобней… хотя понимаю $GLOBALS чуток дико смотрится, но просто не хотел код примера дополнительными классами-обёртками раздувать.
Способы использования конечно не обязаны быть в концепции ООП, но было бы красиво :) Плюс такой пример можно было бы с незначительными переделками использовать в своем проекте, а этот как-то не очень хочется.
Lagger — обработка ошибок и отладка в PHP с закрытыми глазами