Апатичный tools php. Список полезных инструментов для php разработчика

  • Перевод

PHP один из самых широко используемых языков для создания вебсайтов. PHP фреймворки, такие как Zend, CakePHP, CodeIgniter и т.д и open source классы и библиотеки упростили разработку.
Независимо от того, являетесь ли вы опытным разработчиком или новичком, инструменты, которые вы используете, имеют прямое влияние на вашу продуктивность. Здесь собран список действительно полезных утилит и расширений для PHP разработчиков, которые помогут ускорить разработку, и улучшит итоговое качество кода.

Тестирование

PHPUnit
PHPUnit является одним из семейства тестирующий фреймворков xUnit и упрощает написание тестов, так же как и их запуск и анализ результатов.

SimpleTest это аналог JUnit/PHPUnit. Поддерживает mock объекты и может быть использован для автоматизации регрессионного тестирования веб приложений. Это возможно при помощи скриптабельного HTTP клиента, парсящего страницы и симулирующего такие вещи, как переход по ссылкам и отправка форм.
vfsStream
vfsStream это обертка для потоков файловой, полезная при юнит тестировании для создания mock объектов файловой системы. Можно использовать совместно с любым тестирующим фреймворком, например SimpleTest или PHPUnit.

Непрерывная интеграция

phpUnderControl
phpUnderControl это аддон для системы автоматической сборки CruiseControl, который содержит некоторые из лучших средств разработки на PHP. Проект нацелен на то, чтобы первые шаги с PHP и CruiseControl были как можно проще. К phpUnderControl прилагается утилита для модификации существующей развернутой системы CruiseControl.
Xinc
Xinc это сервер непрерывной интеграции написанный на PHP 5. Имеется встроенная поддержка Subversion и Phing (то есть и PHPUnit), и может быть легко модифицирован для поддержки других систем контроля версий и билд систем.

Cheat Sheets

PHP Cheat Sheet от AddedBytes
Одностраничный cheat sheet, перечисляющий аргументы для функций форматирования дат, синтаксис регулярных выражений и распространенные функции.
PHP 5 Online Cheat Sheet
Приведение типов: Boolean, Integer, String, Array, Object/Class; Строки: функции, обработка; Массивы: функции, обработка; Классы: объявление, объявление методов, видимость; Дата/Время: функции, форматы; Предопределённые переменные: $_SERVER, $_FILES

Процедуры обеспечения качества (Quality Assurance или сокращённо QA ) для PHP -кода весьма востребованы, но очень редко применяются на практике.

В мире веб-разработки, где фокус всегда был смещён на прототипирование «на лету » и быстрое развёртывание, качество кода почти никогда не ставится во главу угла. Но недавно мне указали на сайт PHP QA Tools , который ведёт Себастиан Бергманн .

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

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

1. PHPUnit

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

composer global require "phpunit/phpunit=4.1.*"

2. Behat

Behat – это фреймворк, помогающий осуществлять разработку согласно концепции BDD . (Behavior-Driven Development – разработка, основанная на поведении программы, разновидность TDD – Test-Driven Development, разработки, основанной на постоянном тестировании . – Прим. перев.).

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

Scenario: List 2 files in a directory Given I am in a directory "test" And I have a file named "foo" And I have a file named "bar" When I run "ls" Then I should get: """ bar foo """

Затем вы пишете классы с методами, реализующими предложения, например:

/** @Given /^I have a file named "([^"]*)"$/ */ public function iHaveAFileNamed($file) { touch($file); }

А Behat вызывает эти функции и передаёт им аргументы, которые вы задали в кавычках.

Поскольку эти тесты легко понимаются и даже пишутся людьми с минимальной подготовкой, их применение может ощутимо снизить «языковой барьер » между менеджментом и разработчиками. Вот только не совсем понятно, в какую категорию входят эти тесты: TDD или BDD ?

BDD или TDD

Существует множество руководств, статей и видеороликов, посвящённых сравнению TDD и BDD , но основная идея, которую можно вынести из них всех, сводится к следующему: BDD – это TDD, доведённое до ума.

BDD – это правильное TDD

Приёмы и инструменты BDD проверяют функционирование вашего приложения в соответствии с контекстом его выполнения. Обе методологии не исключают совместного применения: BDD может использовать отладочные инструменты наподобие тех, что имеются в PHPUnit. Тем не менее, необходимо учитывать главное различие между методологиями, о которых мы говорим:

BDD не покрывает код!

Как же мы узнаем, в какой процедуре или в каком файле у нас ошибка? Какой код мы проверили, а какой ещё надо проверить? Проще говоря, никак (разумеется, если вы не используете отдельные средства , оценивающие покрытие кода ).

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

Если внешне всё в порядке, тест считается пройденным. Если функция не взаимодействует с пользователем, можно считать её не тестируемой. Просто с точки зрения BDD целое (программа ) значит больше, чем его части (процедуры и функции ), в то время как с точки зрения TD D никакого целого не существует. Методология BDD не предназначена для приверженцев мелочного контроля .

По возможности используйте в вашем проекте обе методологии. Если это выходит слишком затратно, я советую выбрать BDD. Её инструменты и методы оказываются более ценными в долгосрочной перспективе.

Behat может быть установлен глобально командой:

composer global require behat/behat="~3.0.6"

3. vfsStream

Развивая тему средств тестирования, необходимо упомянуть также vfsStream – эмулятор файловой системы, который поможет заменить настоящую файловую систему при юнит-тестировании приложений, написанных на PHP .

Функция vfsStream проста: замена файловой системы в прототипе веб-приложения. Примеры использования vfsStream , приведённые на странице в вики, говорят сами за себя, а из более сложных функций стоит отметить способность копировать структуру каталогов из реальной файловой системы вместе с атрибутами доступа и файлами (объём которых не должен превышать заданной квоты ).

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

4. PHPLOC

Ещё одно детище мистера Бергманна – PHPLOC (LOC – Lines Of Code, строки кода – единица измерения производительности труда программиста, столь же популярная, сколь и обманчивая . – Прим. перев.) – утилита, способная генерировать различную статистику о вашем коде: количестве строк, файлов, классов и т. д.

Утилита умеет проходить дерево ревизий в Git , генерировать отчёты за разные периоды и экспортировать их в формат CSV .

PHPLOC может быть установлен командой:

composer global require "phploc/phploc=*"

и использоваться для любого проекта на любом хостинге. Всё, что для этого нужно – запустить:

где «FOLDER » – папка с проектом, который вы хотите проанализировать.

Разумеется, польза от подобной статистики в лучшем случае сомнительна, но она может быть использована как аргумент в спорах между менеджерами и разработчиками, и я часто вижу на страницах Github , как различные проекты публикуют там красивые графики развития, сформированные при помощи PHPLOC .

Сайт Себастиана Бергманна также упоминает утилиту PHP_Depend . Мне она кажется всего лишь слегка устаревшим и не аккуратно спроектированным конкурентом PHPLOC . Мы решили не указывать её отдельным пунктом – отчасти поэтому, а отчасти потому, что следующим номером нашего списка выступает инструмент, использующий PHP_Depend у себя под капотом.

5. PHP Mess Detector

PHP Mess Detector (обнаружитель беспорядков ), будучи установленным, обрабатывает ваш код утилитой PHP_Depend и использует полученные метрики для составления собственных отчётов.

PHPMD пытается выявить ошибки, которые не находит компилятор, не оптимальные алгоритмы, переусложнённый код, не используемые выражения и другие подобные проблемы.

PHP Mess Detector может быть установлен командой:

composer global require "phpmd/phpmd=*"

PHPMD в своей работе руководствуется списком так называемых правил: набором специфических указаний того, как и что искать в исходниках. Есть большое количество предопределённых правил .

Пользователь также может расширить систему, написав собственные правила .

Мы ещё расскажем о PHP Mess Detector более подробно в одной из будущих статей.

6. PHP CodeSniffer

Подобно PHPMD , CodeSniffer осуществляет статический анализ вашего кода. Кроме PHP , этот инструмент проверяет также код CSS и JavaScript .

CodeSniffer всегда был доступен для инсталляции при помощи PEAR . Теперь, когда PEAR уходит в прошлое, есть возможность установить его и при помощи Composer :

composer global require "squizlabs/php_codesniffer=*"

Использовать CodeSniffer довольно легко, о чём свидетельствует вики проекта . Мы планируем в ближайшее время рассказать вам о том, как интегрировать CodeSniffer в свой проект.

7, 8. DCD и CPD

Ещё две утилиты авторства господина Бергманна, Dead Code Detector и Copy-Paste Detector , помогают выявить не используемый код (методы и функции, объявленные, но не используемые в вашем проекте) и дублируемый код, соответственно.

Эти две совершенно необходимые утилиты помогут поддерживать ваш код в состоянии, которое соответствует принципам DRY . Как и все вышеописанные инструменты, DCD и CPD могут быть установлены командами:

composer global require "sebastian/phpcpd=*" composer global require "sebastian/phpdcd=*"

Все вместе

Все программы, о которых мы говорили в нашей статье, могут быть установлены следующим набором команд (кроме разве что vfsStream , который вам проще будет запросить в файле composer.json соответствующего проекта ):

composer global require "sebastian/phpcpd=*" composer global require "sebastian/phpdcd=*" composer global require "phpunit/phpunit=4.1.*" composer global require behat/behat="~3.0.6" composer global require "phploc/phploc=*" composer global require "phpmd/phpmd=*" composer global require "squizlabs/php_codesniffer=*" composer global require "sebastian/phpcpd=*" composer global require "sebastian/phpdcd=*"

Теперь вы можете использовать любую из этих утилит без необходимости объявлять их вручную в вашем коде.

Если Вы совершеннолетний, дарю вам бэкап моего сайта торч.ру - можете его скачать, восстановить тор4.ру на своем персональном компьютере с системой Windows и пользоваться в личных целях. Получится почти полностью функциональный сайт, работает все кроме регистрации, даже поиск и постинг сообщений))
Опыт вебмастера не так важен, как прямые руки, несколько часов свободного времени и это Руководство. Ну дня Вам полюбому хватит, зато не будете зависеть от обитателей и руководства этого сайта, нормальным людям там вообще нечего делать.
1. Бесплатно скачиваем с офсайта дистрибутив локального сервера Denwer — 3 размером 8.5 Мб и устанавливаем его на компьютер с настройками по умолчанию.
2. Еще вам нужен текстовый редактор, например бесплатный Notepad++, хотя и простой Notepad в принципе сгодится. Открываем в нем файл
C:\WebServers\usr\local\apache\conf\httpd.conf
закомментируем строчку 498:
# AddDefaultCharset windows-1251
и сохраняем файл.
3. Открываем файл
C:\WebServers\usr\local\mysql-5.5\my.ini
31 и 78 строчки (max_allowed_packet) заменяем на
max_allowed_packet = 16M
и сохраняем файл.
4. Скачиваем бэкап сайта торч.ру, например отсюда
https://drive.google.com/file/d/0B0e2b2UQtjG_UC1PLW1sMl9pWGc
или отсюда
https://yadi.sk/d/2rB6q6Six2fos
Бэкап весит 2 с лишним Гб, основной объем составляют файлы картинок jpg и без расширения, также есть php и js скрипты, файлы данных html и sql, и другие файлы. В принципе можно просмотреть все эти файлы в простом графическом или текстовом редакторе. Но чтобы восстановить сайт, нужно создать папку
C:\WebServers\home\tor4.eu
и распаковать бэкап в нее.
5. Открываем файл
C:\WebServers\home\tor4.eu\ru\phpBB\includes\utf\utf_tools.php
вписываем в 20 строчку:
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT);
и сохраняем файл.
6. Открываем файл
C:\WebServers\home\tor4.eu\ru\phpBB\config.php
и заменяем конфигурационные данные на следующие:
$dbhost = ‘localhost’;
$dbport = »;
$dbname = ‘komok_phpbb’;
$dbuser = ‘komok_phpbb’;
$dbpasswd = ‘abcddcba’;
7. Открываем файл
C:\WebServers\home\tor4.eu\ru\phpBB\store\bigdump.php
находим там строчку Database configuration и ниже ее заполняем:
$db_server = ‘localhost’;
$db_name = ‘komok_phpbb’;
$db_username = ‘komok_phpbb’;
$db_password = ‘abcddcba’;
8. Удаляем файл
C:\WebServers\home\tor4.eu\ru\phpBB\store\.htaccess
9. Открываем файл
C:\WebServers\home\tor4.eu\ru\.htaccess
удаляем все строчки, кроме последней
ErrorDocument 404 …
и сохраняем файл.
10. Кликаем на рабочем столе иконки Stop Denwer, потом Start Denwer.
11. Набираем в вашем браузере
http://localhost/denwer/Tools/addmuser/index.php
в появившиеся окошки вписываем
Имя…..: komok_phpbb
Логин..: komok_phpbb
Пароль: abcddcba
еще раз: abcddcba
пароль администратора не заполняем
и жмем кнопку «Создать».
12. Набираем в вашем браузере
http://ru.tor4.eu/phpBB/store/bigdump.php
и когда появится табличка с именами sql файлов, импортируем файл
backup_1462628366_b236e74704049a08.sql.gz
Начнет кружиться курсор загрузки и у вас есть пол часика попить чайку, это нормально. Если в процессе не будет ошибок, то после успешного завершения импорта sql файла скрипт известит вас об этом в красочной табличке.
13. Если же табличка не появится или в процессе импорта произойдет ошибка, то или вы неточно следовали инструкции, проверьте все, исправьте, потом остановите и снова запустите Денвер и повторите попытку импорта, или же это ошибка на стороне сервера.
Разбив дамп на 34 маленьких файла, я минимизировал вероятность ошибки. Можете попытаться импортировать все файлы, имена которых начинаются с backup_147. После импорта каждого файла должна появляться табличка. Затем зайдите в phpMyAdmin, набрав в браузере
http://localhost/Tools/phpMyAdmin
и объедините все таблицы phpbb_posts10, phpbb_posts11, … phpbb_posts39 в одну таблицу phpbb_posts, выполнив SQL запросы
INSERT IGNORE INTO phpbb_posts SELECT * FROM phpbb_posts10;

INSERT IGNORE INTO phpbb_posts SELECT * FROM phpbb_posts39;
Потом лишние таблицы можно удалить. Времени уходит куча, но в принципе это не сложно.
14. Набираем в вашем браузере
http://ru.tor4.eu/phpBB/
и видим замечательный когда-то в прошлом форум торч.ру на вашем компьютере.
15. Для того чтобы почитать закрытые разделы, нужно войти.
Дарю логин администратора сайта
имя пользователя: tapok
пароль: terpinkod
16. Можете тоже почувствовать себя немного администратором, поуправлять сайтом торч.ру через центр администрирования. А то сейчас только я и наркотварь можем это делать. Пользуйтесь моей добротой, наркотварь жаден, он вам копию не даст, он даже поменял форумный движок на платный, украв у меня сайт. Вы не хуже этого барана — он тупой, трусливый, завистливый, мстительный, властолюбивый клеветник. Это беззастенчивый вор, стукач, баландер, извращенец, масон и нарколыга телепат!

(с) komok, создатель торч.ру, 2016 год

PHP is the most commonly used web development scripting language. Every month, a number of tools are created to make life of PHP developers much easier. Script debugging has always been a concern for developers, especially for beginners and intermediate level developers.

Before reading the full post, you should first understand the concept of debugging.

Debugging is a subject of removing bugs from the script to ensure correct execution. Debugging is always a time consuming task, as during dry run you have to go at every line of code. To reduce the time spent in debugging, various tools have been developed. PHP debugging has never been an easy subject.

In the competitive market there are numerous software available for debugging of PHP scripts. Selecting a debugging tool is not an easy task. To select a debugging tool, first you should consider the functionalities. PHP debugging tools are basically the apps developed to find bugs within the code. The significance of these tools becomes more evident when a developer is working on large projects containing thousands lines of code. Here, we have just compiled a list of the most popular PHP debugging tools to help developers to generate a code in a timely manner. Details are as follows:

  1. Xdebug:
  1. Netbeans:

Netbeans is another debugging tool which is originally written in Java. A significant advantage of netbeans is that its IDE can be extended by the third party.

Netbeans is a very useful tool for PHP development as well. Netbeans can be run on different compatible platforms like Linux, Microsoft Windows, Mac OS and Solaris.

Also, you may find a wider community over the internet which can help you in development. Latest version of Netbeans is Netbeans IDE 8.1. Netbeans is open source and has worldwide community of users.

NetBeans PHP editor is very useful as it facilitates developers in code generation. There are many benefits of using net beans. Semantic code highlighting, code formatting, popup documentation, marking of occurrences and exit point are few of them.

  1. Sublime:

Sublime is a very popular source code editor which supports many languages. Sublime is also an extendable resource. It can be downloaded from the official website of Sublime text.

Its interface and extraordinary features are the main reason behind its popularity. It has very good performance on cross platforms. It is very fasts in searching files, switching files, opening files and switching between different projects.

  1. PHPstorm:

PHPStorm is another popular cross platform IDE for PHP. Its editor has PHP, HTML and javascript debugging options. It supports all major versions of PHP including PHP7.

PHPstorm was written in Java. PHPstorm supports all features which are included in Webstorm. Preinstalled javascript plugins are also available in PHPstorm for example node.js. Latest stable release of PHPstorm is PHPstorm 10.0.

Benefits of testing and debugging with PHPstorm:

It is easy to configure debuggers like x debug and zend debugger to test local variables, arrays, complex objects. PHPUnit tests can be performed in it and can be executed from directory, class or file with code coverage. User can jump from execution stats to functions in PHP via PHPstorm.

  1. Zend studio:

Zend Studio is also a commercial IDE for PHP owned by the Zend technologies. It is based upon PHP development tools (PDT) plugin for Eclipse platform. It is a pre-integrated and tested application stack.

Being integrated with the Zend Server, it helps a lot the PHP developers to speed up detection analysis in the production environment. Moreover, it provides MVC view through which code navigation and integration with zend which auto generates code. It enables deployment with FTP, SSH and SFTP. Its stable version was released in April 2015.

  1. Kint:

Kint is a very powerful PHP debugging tool. Kint is also an open source platform. It is a very well known debugger. It is said to be a zero setup replacement. It presents enough information like variable name and other tailored alternatives.

Kint is a very friendly tool which presents variable content in readable way. It is similar to Krumo in a way that it provides alternative to var_dump(). It provides replacement for print_r() and debug_backtrace() as well. It helps presenting data in better way.

  1. Webgrind:

Webgrind is basically a profiling web frontend of Xdebug. It is compatible with all platforms and helps by implementing features of Kcachegrind. The installation is very quick. It is best for quick and messy optimizations. It is very simple and provides cross platform compatibility.

  1. Whoops:

Whoops is a library which helps in development and maintenance of projects. Through this library, you can easily deal with errors. It is considered as a flexible, straightforward toolset which helps in dealing with errors. It shows an error page.

Library main features include detailed error pages. It also supports Ajax and JSON requests. It provides compact, clean and tested code base environment. Whoops responds to the JSON request, if it is failed during an AJAX request.

  1. PHP_Dyn:

It is a debugging tool of PHP which is an extension of PHP. You can easily get trace of code scripts which do not need to be changed. This extension enables printing of HTTP request parameters. Also it enables the printing of function call and the return value.

The above 10 debugging tools of PHP are equally useful. However this list doesn’t determine their ranking among PHP experts. Nonetheless, these tools are being used by PHP experts all over the world.