С фреймворком Yii я не работал почти год, а тут выдался свободный вечер и чтобы освежить свои знания решил установить Yii 2. Посмотреть, что там нового придумали или усовершенствовали. Итак перед нами ноутбук с Windows 7 на котором я ранее не работал с Yii, Symfony и Lavarel. Привычка вторая натура, скачиваю и устанавливаю Git 2, Denwer 3 и пакет расширений для PHP 5.3.13 (хотя нужно минимум 5.4). Захожу на официальный сайт Yii, но через git можно установить версию 1.1.14, а 2 Beta только через Composer.
Установка Composer в Denwer
Всё просто, скачиваем с официального сайта Composer и при установки выбираем файл php.exe который находится в директории c:\WebServers\usr\local\php5\ ,если конечно вы не меняли название корневой папки WebServers и диск C.
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
✓ Live Streaming✓ Interactive Chat✓ Private Shows✓ HD Quality
Anya is LIVE right now
FREE
Free to watch • No registration required • HD streaming
Проверка соблюдения стандартов кодирования в PHP на примере связки Denwer3 + Code Sniffer + PhpStorm4 + SVN
Если над проектом работает несколько человек, то рано или поздно встаёт вопрос, что неплохо было бы выработать общие правила кодирования. Так как, когда код оформлен единообразно, то значительно улучшается его читаемость, да и ошибки увидеть проще.
Конечно, попытка внедрения стиля кодирования в команде программистов может вызвать на первом этапе сопротивление тех, кто не любит писать комментарии к классам и методам или тех, кому придётся пересмотреть свой стиль написания кода. Но как показывает мой опыт, если программистам предоставить удобный инструмент для отслеживания стиля, то переход на единый стандарт пройдёт менее болезненно, а через некоторое время вопрос "Зачем это надо?" будет совершенно не актуален.
Ниже я рассмотрю настройку рабочего места PHP програмиста, для работы с автоматическим контролёром стиля кодирования PHP Code Sniffer.
Буду отталкиваться от того, что используется операционная система Windows с установленным пакетом Denwer3.
Для того, чтобы поставить Code Sniffer нам необходимо использовать PEAR, который в стандартной поставке Denwer3 не идёт. Поэтому после установки Денвера, надо установить ещё и пакет расширений (при выключенном вебсервере).
Так выглядит директория с php до установки пакета расширений (D:\WebServers5.3.1 - это директория в которую установлен Denwer, у вас она может быть другая):
Так выглядит директория с php после установки пакета расширений:
Теперь нам надо установить PEAR - это репозиторий пакетов расширений PHP. Для этого надо в директорию с php скачать файл http://pear.php.net/go-pear.phar.
Дальше нам придётся работать с командной строкой, поэтому используйте любую программу, которая умеет это делать (например FAR) или стандартным средством Windows cmd.exe.
В каталоге Денвера с php надо запустить go-pear.bat. Если вы работаете с несколькими копиями Денвера или Денвер установлен у вас на флешке, то на вопрос PEAR'a ставить его в систему или локально надо ответить local. Затем PEAR ещё раз попросит вас проверить все директории, куда он производит установку и спросит, переписать ли php.ini. Везде отвечаем утвердительно. Всё, PEAR установлен.
Теперь надо поставить сам PHP_CodeSniffer. Для этого опять же в каталоге с php в командной строке пишем:
pear install PHP_CodeSniffer
Ошибка "No releases available for package "pear.php.net/PHP_CodeSniffer" может возникнуть, когда установка PEAR уже выполнялась до этого. У PEAR'a есть кеш, который просто надо чистить между установками. Находится он в "C:\Documents and Settings\<Пользователь>\Local Settings\Temp\pear".
После установки в директории PEAR появится каталог PHP, в котором и располагается CodeSniffer.
В поставке Code Sniffer'а уже идёт несколько стандартов кодирования: PEAR, PHPCS, Squiz и Zend. Поэтому можно использовать один из них. А можно написать и свой собственный стандарт (об этом я расскажу чуть позже). Так же можно гибко настроить сниффер, чтобы выборочно проверять директории проекта, ведь в нём могут использоваться сторонние библиотеки, приводить которые к своему стандарту кодирования не стоит.
Теперь поговорим о том, как использовать Code Sniffer. Об этом подробно написано в документации к пакету. Если кратко, то в каталоге с php есть bat-файл phpcs.bat. Если запустить его из командной строки, например так:
phpcs.bat X:\home\sl-dima\www\index.php
То он проверит указанный в параметре файл и выдаст по нему отчёт:
FILE: X:\home\sl-dima\www\index.php
--------------------------------------------------------------------------------
FOUND 2 ERROR(S) AFFECTING 1 LINE(S)
--------------------------------------------------------------------------------
10 | ERROR | Missing @license tag in file comment
10 | ERROR | Missing @link tag in file comment
--------------------------------------------------------------------------------
Можно указать не только один файл, но и целую директорию. Если ваша IDE поддерживает работу с командной строкой, то можно на горячую кнопку повесить вызов phpcs.bat с передачей параметром пути к открытому в IDE файлу.
Но если вы пользуетесь IDE JetBrains PHPStorm 4, то в нём поддержка Code Sniffer включена в стандартные возможности программы, что позволяет подсвечивать ошибки стиля кодирования прямо в IDE.
Необходимо зайти в File - Settings - Inspections - PHP и поставить галку напротив PHP Code Sniffer validation. В появившемся окне указать путь до phpcs.bat и выбрать тот стиль кодирования, который хотим использовать.
После этого ваш код будет автоматически проверяться на соответствие стилю кодирования и подсвечиваться в IDE. При наведении на подчёркнутый код можно получить сообщение от Code Sniffer, в чём он видит ошибку.
Итак, инструмент для проверки стиля кодирования у нас есть. Но никто не может помешать нерадивому программисту его отключить или просто не использовать. Для того, чтобы все в команде выполняли договорённость о едином стиле кодирования, Code Sniffer можно подключить к вашей системе контроля версий с помощью хука.
В документации Code Sniffer'a подробно описано как подключить хук к системе контроля версий SVN. Хук позволит при коммите любого кода в SVN проверить его на соответствие стандартам и если они нарушены коммит не пройдёт, а будет выдан отчёт о найденных ошибках. На просторах интернета можно найти и описание хука для GIT.
Таким образом мы получили удобный инструмент для автоматического отслеживания стиля кодирования. Если у вас и вашей команды есть сомнения в необходимости этого, просто попробуйте на каком-нибудь новом проекте и я уверен, что положительный результат не заставит долго ждать.
Если вам надоело для отладки своих скриптов использовать вариации echo(), var_dump() и print_r(), то обратитесь к мощному отладчику Xdebug, который значительно упростит вам работу. Ниже я расскажу, как настроить его под Windows для популярного набора для web-разработки Denwer и использовать в IDE PHPStorm.
Вначале надо посмотреть, что сообщит phpinfo() о версии php, которую вы используете. Кроме версии нужно обратить внимание и на PHP Extension Build. В зависимости от их значений нужно выбрать какую версию Xdebug качать с официального сайта.
Для параметров, как на скриншоте выше, со страницы Xdebug надо скачать релиз PHP 5.3 VC6 TS (32 bit).
Полученный файл необходимо положить в директорию с расширениями php. Для Denwer это будет X:\usr\local\php5\ext (X - виртуальный логический диск Денвера, у вас он может быть другой).
После этого необходимо прописать подключение Xdebug в php.ini (X:\usr\local\php5\php.ini).
Обратите внимание: если у вас php5.2, то необходимо использовать директиву
zend_extension_ts
Кроме этого она должна идти самой первой до остальных директив Xdebug'а.
После любых манипуляций с php.ini Денвер надо перегрузить.
Если Xdebug встал успешно, то php_info() должно сообщить об этом.
Обратите внимание, что не должно быть надписи XDEBUG NOT LOADED AS ZEND EXTENSION. Если она присутствует, то проверьте, что у вас в php.ini правильно подключен Xdebug: для PHP5.3 используется zend_extension; для версий ниже zend_extension_ts; нет директивы вида extension=php_xdebug-2.0.3-5.2.5.dll.
Если всё хорошо, то на php-ошибки Xdebug будет оранжево ругаться в браузере:
Но этого нам мало, ведь настоящая мощь Xdebug чувствуется, когда его можно использовать прямо в IDE. И ниже мой пример, как Xdebug можно использовать в связке с JetBrains PHPStorm.
Для начала добавим с php.ini ещё парочку директив, так, чтобы секция Xdebug выглядела так:
После этого перейдём к настройкам PHPStorm. Заходим в меню Run->Edit Configuration и редактируем PHP Remote Debug.
В Servers выбираем ранее настроенный сервер вашего проекта. Если такого нет, то настраиваем его.
Здесь задаём имя серверу. Пишем хост (тот хост, который вы открываете в браузере, чтобы работать локально с проектом), порт и выбираем дебаггером Xdebug.
В Ide key пишем ту же строку, что мы написали в директиву xdebug.idekey в php.ini.
Теперь переходим на любезно предоставленную командой JetBrains страницу с марклетами для удобной отладки приложения.
Нас интересует правая колонка. В ней проверяем, что Ide key совпадает с тем, что мы используем в php.ini и в настройках PHPStorm. Добавляем ссылки с этой страницы на панель закладок браузера.
Теперь всё готово для отладки нашего web-приложения.
Процесс отладки происходит следующим образом.
Включаем прослушивание PHP Debug Connection
Ставим точку остановки (Break point), кликнув справа от номера строки.
Переходим на страницу с web-приложением и нажимаем на панели закладок xdebug Start session и обновляем страницу. Если скрипт, генерящий страницу, проходит через точку останова, то PHPStorm остановит php-скрипт в этом месте.
В окне Frames будут видны вызовы, в окне Variables состояние переменных на момент остановки. Кроме этого вы можете навести курсор на переменную прямо в тексте программы и появится всплывающее окно с информацией о значении этой переменной. Вы можете продолжить скрипт до следующей точки остановки (или конца программы), или пойти по шагам - это уже как вам необходимо.
В дальнейшем просто программируем, ставим точки остановки, обновляем страницу в браузере, а в IDE смотрим информацию.
В PHPStorm есть ещё одна интересная возможность - удобный просмоторщик профайлера Xdebug. Если вы нажмете в браузере на закладку xdebug Start profiler, а потом перегрузите страницу, то по пути, указанному в php.ini, создастся файл, в который Xdebug сохранит подробную информацию об отработавшей программе.
Если PHPStorm вызвать меню Tool->Analyze Xdebug Profiler Snapshot и указать путь до файла с профайлом Xdebug'a, то можно получить отличный инструмент оценки производительности вашего приложения.
У Xdebug и PHPStorm очень много возможностей по отладке кода, но об этом отдельный рассказ.
Бесплатный локальный сервер Denwer позволяет работать с сайтами на различных движках (например, Joomla или WordPress) без затрат на аренду виртуального хостинга и даже вообще без доступа в интернет. В ряде случаем преимущества использования Денвер могут перевесить его недостатки и работа с сайтом через Denwer будет единственно возможностью. Denwer можно скачать бесплатно с сайта разработчиков и довольно просто установтить на свой компьютер под управлением Windows. В дистрибутив локального сервера интегрирована программа PhpMyAdmin, позволяющая вам работать с базами данных вашего сайта. Обо все этом читайте со всеми подробностями в статье Denwer скачать
На моём блоге YchimJoomla.Ru опубликован цикл статей, можно их назвать уроками, про локальный хостинг Denwer. В простой и доступной для понимания форме описано и показано на картинках: Что такое Denwer? Зачем он наччинающим вебмвстерам? Как установить и работать с Denwer?
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
✓ Live Streaming✓ Interactive Chat✓ Private Shows✓ HD Quality
Anya is LIVE right now
FREE
Free to watch • No registration required • HD streaming