• Как написать свой фреймворк на php. Обработка ошибок. Урок 4

    Обработка ошибок в php, это весьма занятная вещь. С одной стороны, в этом языке есть все, чтобы обработать и вывести ошибку. С другой, в нем есть такой тип ошибок, который ни коим образом не обрабатывается. Это Fatal Error, или ошибки синтаксиса. 

    Ошибки таких типов не попадают в обработчики, они просто выводятся как есть. 

    Дисклеймер

    Код ниже, без тени сомнения, взят с фреймворка Yii. Цель данного цикла ни в том чтобы написать свой велосипед, а в том чтобы знать, как этот велосипед в принципе устроен.

    Итак, в прошлых уроках мы создали макет приложения, пару страниц, роутер и шаблонизатор. Мы даже объявили такой класс

    class Except extends Exception{}

    который ничего не делает. Зайду немного вперед, он и сейчас ничего не будет делать. Но мы поймем зачем он в принципе будет нужен в дальнейшем.

    Когда в коде мы обрабатывали какую-то бизнес логику, мы выкидывали исключение, таким кодом

    throw new Except('Error message');

    это приводило к тому, что на экране выводилась подобная запись 

    вывод ошибок в Ideal фреймворк до версии 1.0.2

    Fatal error: Uncaught exception 'Except' with message 'File Z:\home\analize\ideal/application/views/page/pages/B2.php not found' in Z:\home\analize\ideal\ideal\classes\Controller.php:29 Stack trace: #0 Z:\home\analize\ideal\ideal\classes\Controller.php(43): Controller->_renderPartial('Z:\home\analize...', Array, true) #1 Z:\home\analize\ideal\application\views\page\read.php(2): Controller->renderPartial('pages/B2') #2 Z:\home\analize\ideal\ideal\classes\Controller.php(26): include('Z:\home\analize...') #3 Z:\home\analize\ideal\ideal\classes\Controller.php(43): Controller->_renderPartial('Z:\home\analize...', Array, true) #4 Z:\home\analize\ideal\ideal\classes\Controller.php(53): Controller->renderPartial('read', Array, true) #5 Z:\home\analize\ideal\application\controllers\PageController.php(4): Controller->render('read', Array) #6 [internal function]: PageController->actionRead('B2') #7 Z:\home\analize\ideal\ideal\classes\Controller.php(7): call_user_func_array(Array, Array) #8 Z:\home\analize\ideal\ideal\classes\App.php in Z:\home\analize\ideal\ideal\classes\Controller.php on line 29

    Это встроенный обработчик ошибок php, вывел для нас эту исчерпывающую информацию. Здесь есть все что нам потребуется для того, чтобы выяснить, что же произошло: само сообщение, стек вызова функций с файлами и методами. Мы видим даже параметры, которые поданы в тех или методах стека. Все что нужно есть, но выводится это не очень красиво.

    Для того, чтобы сделать это более удобоваримым, нам потребуется установить обработчик исключений, через метод set_exception_handler. Мы обрабатываем не только исключения, но и ошибки php (все, кроме fatal), поэтому установим еще обработчик set_error_handler.

  • Показываем свое изобрахение при ошибке 404 через htaccess

     Расскажу об одном интересном способе, как показать определенную картинку если той, к которой обратился пользователь на сайте не оказалось.

    Что лучше, надпись нет изображения, или осмысленная картинка?

  • Что нового в JQuery 1.5

    31-го января команда JQuery объявила о выпуске, точно по графику, версии 1.5 (почти) всеми любимой библиотеки JavaScript.

    Чем же версия Jquery 1.5 отличается от 1.4.4, не с проста увеличена мажорная цифра после точки. Напомню, что до этого мы видели лишь релизы 1.4.2,1.4.3,…