PHP → Автодокументация PHP в NetBeans 7.01 с использованием phpDocumentor, рассказываем, настраиваем, исправляем
В этой статье вы получите новые и старые знания, в частности некоторые из них появились совершенно недавно в рунете, а некоторые вообще введены мной прямо на месте не отходя от кассы.
Итак вы узнаете:
На проекте столкнулся с тем, что потребовалось создать нормальную документацию. Писать отдельно документацию не самый лучший способ, базовое описание библиотеки можно выполнить и в стиле автодокументации. Начал разбираться в вопросе и о чудо, в NetBeans 7.01 оказывается поддерживается PHPDoc, вполне достойно и удобно. Был удивлен бедностью информации по этой тематике в русском сегменте сети. Кроме того, я нашел несколько подводных камней, которые создавали проблемы при настройке под Windows.
Если заинтересовались, то добро пожаловать под кат
Итак вы узнаете:
- Базовую информацию о том, что такое автодокументация и как она делается в PHP
- Настройка генератора документации phpDocumentor в NetBeans 7.01
- Ссылка на исправленную мной библиотеку phpDocumentor со списком внесенных изменений, думаю некоторым может сразу же понадобиться
- Ссылки на почитать
На проекте столкнулся с тем, что потребовалось создать нормальную документацию. Писать отдельно документацию не самый лучший способ, базовое описание библиотеки можно выполнить и в стиле автодокументации. Начал разбираться в вопросе и о чудо, в NetBeans 7.01 оказывается поддерживается PHPDoc, вполне достойно и удобно. Был удивлен бедностью информации по этой тематике в русском сегменте сети. Кроме того, я нашел несколько подводных камней, которые создавали проблемы при настройке под Windows.Если заинтересовались, то добро пожаловать под кат
PHP → Обработка критических ошибок в PHP
В статье описан функционал, который доступен в PHP (актуально для 5.3.х) для обработки ошибок всех типов, включая ошибки интерпретации кода (E_ERROR, E_PARSE, E_WARNING, etc). Эта обработка поможет вам для управляемого отображения страницы в случае возникновения таких проблем. В статье присутствует множество описаний и рабочих примеров(архитектуры) для того, что бы сразу воспользоваться в своем программном продукте. В конце концов, ну немного сломали сайт, ну надо же, об этом сообщить поисковику с заголовком 4хх или 5хх и повеселить пользователя, вместо возврата белого экрана (или что хуже экрана со священной информацией, для хакеров) с ответом 200 Ok.

Идея написать этот топик возникла, когда я на храбре задал 2 вопроса:
По моей карме и добавление в избранное я понял, что они оказались интересные для PHP хабрасообщества. По этой причине я решил оформить решения этих вопросов в виде статьи, да бы людям и поисковикам было проще и комплексно находить нужную информацию.
Если заинтересовались, то подробности под катом…

Идея написать этот топик возникла, когда я на храбре задал 2 вопроса:
- Вопрос о перехвате предупреждений и вывод ошибок в указанное место шаблона
- Вопрос о перехвате критических ошибок, заставляющие выполнение скрипт только остановиться
По моей карме и добавление в избранное я понял, что они оказались интересные для PHP хабрасообщества. По этой причине я решил оформить решения этих вопросов в виде статьи, да бы людям и поисковикам было проще и комплексно находить нужную информацию.
Если заинтересовались, то подробности под катом…
PHP → Синглтоны версии 5.3 в 5.2
Задача
В общем, сложилась такая ситуация, что на предоставленном для проекта хостинге, версия PHP была 5.2, а сам проект написан под 5.3. Наверняка все, кто работает с PHP, знают, что в версии 5.3 появилась возможность доступа к имени класса, полученного с помощью позднего статического связывания.
PHP → По адресу windows.php.net/download сборки PHP 5.3 сделаны VC9, а для Apache от apache.org нужны VC6
Персональные блоги → is_callable корректно работает с Closure (PHP 5.3)
is_callable и семейство функций call_user_func correctly нормально работают с замыканиями Closure (PHP 5.3) точно так же как с анонимными функциями.
PHP → Заметки об архитектуре или Интерпретатор Forth на PHP 5.3
О чем пойдет речь?
Мне очень часто приходится проводить собеседования, нанимая на работу PHP-программистов. 2-3 человека в день — это вполне нормально, хотя и на грани выносливости.
Все кандидаты разные, кто-то просто великолепен, кто-то похуже. Но у тех, кто похуже, всегда одни и те же ошибки.
Во-первых они совершенно не интересуются развитием языка, на котором пишут, и вопрос «А что нового в PHP 5.3» ставит их в тупик, а уж предложение порассуждать на тему «Чтобы Вы добавили в будущие версии языка» — просто пугает.
Во-вторых они категорически не представляют, что PHP может быть хоть чем-то кроме «скриптов для сайтов». Особенно печально это в свете того, что на работе им придется заниматься далеко не сайтами и даже скорее всего не сайтами.
Ну и в третьих кандидаты, которые похуже, с трудом представляют себе процесс построения архитектуры программы. Паттерны — знают, и много, а вот как из паттернов сложить целостную систему, чтобы за нее не было мучительно стыдно — это уже с трудом.
Таким кандидатам и посвящается этот топик. С уважением к их нелегкой доле (а быть программистом на самом деле непросто) и с надеждой, что он подтолкнет их вперед по пути самосовершенствования.
Что мы будем делать?
Давайте попробуем сделать интерпретатор Форта на PHP!
Форт меня всегда манил, как далекая галактика из антиматерии. Стек, слова в словаре, обратная польская нотация… Это только кажется сложным, но на самом деле очень просто, зато здорово «просветляет» и расширяет кругозор.
Давайте сделаем наше приложение консольным, никаких браузеров и серверов. Давайте писать его на PHP 5.3, стараясь использовать язык на 100%. И, конечно же, попробуем изначально сделать так, чтобы пришедшие после нас не повесились от нашего кода в первый же день.
PHP → Вышли PHP 5.3.4 и PHP 5.2.15
Команда разработки PHP сообщает о выпуске обновлений для веток 5.3 и 5.2.
Fixed crash in zip extract method (possible CWE-170).
Paths with NULL in them (foo\0bar.txt) are now considered as invalid (CVE-2006-7243).
Fixed a possible double free in imap extension (Identified by Mateusz Kocielski). (CVE-2010-4150).
Fixed NULL pointer dereference in ZipArchive::getArchiveComment. (CVE-2010-3709).
Fixed possible flaw in open_basedir (CVE-2010-3436).
Fixed MOPS-2010-24, fix string validation. (CVE-2010-2950).
Fixed symbolic resolution support when the target is a DFS share.
Fixed bug #52929 (Segfault in filter_var with FILTER_VALIDATE_EMAIL with large amount of data) (CVE-2010-3710).
Added stat support for zip stream.
Added follow_location (enabled by default) option for the http stream support.
Added a 3rd parameter to get_html_translation_table. It now takes a charset hint, like htmlentities et al.
Implemented FR #52348, added new constant ZEND_MULTIBYTE to detect zend multibyte at runtime.
Multiple improvements to the FPM SAPI.
Over 100 other bug fixes.
Для пользователей, который обновляются с PHP 5.2 доступно руководство по миграции, детально описывающее процесс переноса приложений на PHP 5.3.
Полный список изменений в PHP 5.3.4 смотрите в ченжлоге.
Скачать в виде исходного кода
Скачать бинарники для Windows
PHP 5.3.4
Security Enhancements and Fixes in PHP 5.3.4:
Fixed crash in zip extract method (possible CWE-170).
Paths with NULL in them (foo\0bar.txt) are now considered as invalid (CVE-2006-7243).
Fixed a possible double free in imap extension (Identified by Mateusz Kocielski). (CVE-2010-4150).
Fixed NULL pointer dereference in ZipArchive::getArchiveComment. (CVE-2010-3709).
Fixed possible flaw in open_basedir (CVE-2010-3436).
Fixed MOPS-2010-24, fix string validation. (CVE-2010-2950).
Fixed symbolic resolution support when the target is a DFS share.
Fixed bug #52929 (Segfault in filter_var with FILTER_VALIDATE_EMAIL with large amount of data) (CVE-2010-3710).
Key Bug Fixes in PHP 5.3.4 include:
Added stat support for zip stream.
Added follow_location (enabled by default) option for the http stream support.
Added a 3rd parameter to get_html_translation_table. It now takes a charset hint, like htmlentities et al.
Implemented FR #52348, added new constant ZEND_MULTIBYTE to detect zend multibyte at runtime.
Multiple improvements to the FPM SAPI.
Over 100 other bug fixes.
Для пользователей, который обновляются с PHP 5.2 доступно руководство по миграции, детально описывающее процесс переноса приложений на PHP 5.3.
Полный список изменений в PHP 5.3.4 смотрите в ченжлоге.
Скачать в виде исходного кода
Скачать бинарники для Windows
PHP → Итоги обсуждения type hinting в PHP
И так, %username%, пришло время подвести итоги обсуждения хабратопика PHP type hinting — строгое или мягкое?.
НЛО прилетело и опубликовало эту надпись здесь.
Персональные блоги → Устранение неполадок xdebug с php версии 5.3
Кто пользуется редактором Netbeans для разработки на PHP и установленая версия интерпретатора у него > 5.3, наверное, заметил, что при сеансах отладки не отображаются переменные в области редактора «Variables». Как уже писал пользователь здесь, вышла бета-версия отладчика 2.1.0 (уже вторая даже). Для проверки я установил все это с svn (поскольку в macports до сего времени имеется только версия 2.0.5 без поддержки php5.3):
и добавить строчку к вашему ini-файлу:
ну и перезагрузить сервер:
Пока бета, иногда заметил ошибки «Socket exception occured» при завершении сеанса отладки. Пользуемся на свой страх и риск:)
p.s.: спасибо пользователю Fragster за коррекцию
Привожу пример типичной настройки netbeans + xdebug
# cd /tmp
# svn co svn://svn.xdebug.org/svn/xdebug/xdebug/trunk xdebug
# cd xdebug
# phpize
# ./configure --enable-xdebug
# cp modules/xdebug.so /ваш/путь/к/расширениям
и добавить строчку к вашему ini-файлу:
zend_extension="/ваш/путь/к/расшИрениям/xdebug.so"
ну и перезагрузить сервер:
# /opt/local/apache2/bin/apachectl graceful
Пока бета, иногда заметил ошибки «Socket exception occured» при завершении сеанса отладки. Пользуемся на свой страх и риск:)
p.s.: спасибо пользователю Fragster за коррекцию
Привожу пример типичной настройки netbeans + xdebug