Не вижу своей жизни без PHP CodeStyle Fixer и вот почему.
https://github.com/FriendsOfPHP/PHP-CS-Fixer
Эта штука автоматически делает код совместимым с PSR-1 и PSR-2, чистить его от лишних пробелов, array() вместо [] и вообще позволяет коду, написанному разными разработчиками выглядеть примерно одинаково. Это упрощает его последующее чтение и уменьшает баттхёрт технического директора на тему лишних пробелов перед if'ами.
Для этого инструмента есть плагины под все распространённые IDE, так что код можно приводить в порядок сразу после написания по хоткею или даже при каждом сохранении.
Вот наш конфиг, который мы используем сейчас, можете взять его за основу, но не забудьте посмотреть, что значит каждый параметр в документации.
https://gist.github.com/chekalskiy/c79c77657a18419125c72c86fe333b86
#library #php #psr2
https://github.com/FriendsOfPHP/PHP-CS-Fixer
Эта штука автоматически делает код совместимым с PSR-1 и PSR-2, чистить его от лишних пробелов, array() вместо [] и вообще позволяет коду, написанному разными разработчиками выглядеть примерно одинаково. Это упрощает его последующее чтение и уменьшает баттхёрт технического директора на тему лишних пробелов перед if'ами.
Для этого инструмента есть плагины под все распространённые IDE, так что код можно приводить в порядок сразу после написания по хоткею или даже при каждом сохранении.
Вот наш конфиг, который мы используем сейчас, можете взять его за основу, но не забудьте посмотреть, что значит каждый параметр в документации.
https://gist.github.com/chekalskiy/c79c77657a18419125c72c86fe333b86
#library #php #psr2
Продолжает развиваться новый формат JSON5.
Это такое обратно-совместимое расширение для привычного JSON, делающее его в том числе более удобным для написания руками:
• можно оставлять комментарии,
• можно использовать одинарные кавычки,
• можно не оборачивать в кавычки ключи (но не все),
• можно использовать trailing comma,
и другое.
Библиотека для PHP
#php #library
Это такое обратно-совместимое расширение для привычного JSON, делающее его в том числе более удобным для написания руками:
• можно оставлять комментарии,
• можно использовать одинарные кавычки,
• можно не оборачивать в кавычки ключи (но не все),
• можно использовать trailing comma,
и другое.
Библиотека для PHP
#php #library
Я хочу признаться, что много лет совершал огромную ошибку, которая каждый день влияла на мой код. Последние годы я использовал в качестве IDE сначала Sublime Text, а потом перешёл на Atom — оба они прекрасные редакторы с огромным количеством крутых плагинов и я был ими очень доволен, настроив точно так, как мне хочется. Но потом я запустил PhpStorm.
Я никогда им не пользовался, но недавно вышла новая версия, и меня заинтересовало описание новых возможностей — в частности отслеживание необрабатываемых исключений (Unhandled exception). PhpStorm следит за тем, какие исключения выбрасывают вызываемые функции, и считает, что мы должны или поймать (catch) их, или задекларировать в PhpDoc нашей функции, чтобы не забыть поймать её на уровне выше.
Мы очень широко используем механизм исключений, и мне всегда было очень сложно следить за тем, какие исключения могут быть выброшены в каждый конкретный момент времени, поэтому я решил попробовать PhpStorm, тем более, что есть бесплатный пробный месяц (а потом он будет стоить 9 евро ежемесячно или 90 за год).
Прошло несколько дней, из которых один вечер я потратил на настройку всего-всего, что можно настроить (в том числе конечно же php-cs-fixer) и потом ещё один день, чтобы переписать некоторые части нашего фреймворка, чтобы везде заработало автодополнение и все функции вроде автоматического рефакторинга. Теперь я, наверное, никогда не променяю PhpStorm на что-то другое — идеально работающее автодополнение, очень быстрое всё (по сравнению с Atom), куча катастрофически приятных функций, безошибочный переход к функции и многое и многое другое. Такое ощущение, что с Лады пересел на Тойоту.
Последней вишенкой оказался XDebug, который я игнорировал многие годы и теперь посыпаю голову пеплом. Не будьте как я, используйте полнофункциональные IDE и будет вам счастье.
#php #ide
Я никогда им не пользовался, но недавно вышла новая версия, и меня заинтересовало описание новых возможностей — в частности отслеживание необрабатываемых исключений (Unhandled exception). PhpStorm следит за тем, какие исключения выбрасывают вызываемые функции, и считает, что мы должны или поймать (catch) их, или задекларировать в PhpDoc нашей функции, чтобы не забыть поймать её на уровне выше.
Мы очень широко используем механизм исключений, и мне всегда было очень сложно следить за тем, какие исключения могут быть выброшены в каждый конкретный момент времени, поэтому я решил попробовать PhpStorm, тем более, что есть бесплатный пробный месяц (а потом он будет стоить 9 евро ежемесячно или 90 за год).
Прошло несколько дней, из которых один вечер я потратил на настройку всего-всего, что можно настроить (в том числе конечно же php-cs-fixer) и потом ещё один день, чтобы переписать некоторые части нашего фреймворка, чтобы везде заработало автодополнение и все функции вроде автоматического рефакторинга. Теперь я, наверное, никогда не променяю PhpStorm на что-то другое — идеально работающее автодополнение, очень быстрое всё (по сравнению с Atom), куча катастрофически приятных функций, безошибочный переход к функции и многое и многое другое. Такое ощущение, что с Лады пересел на Тойоту.
Последней вишенкой оказался XDebug, который я игнорировал многие годы и теперь посыпаю голову пеплом. Не будьте как я, используйте полнофункциональные IDE и будет вам счастье.
#php #ide
Когда-нибудь мы все вместе напишем книгу про все нюансы написания сложных PHP-приложений — что поменять в php.ini, как настроить nginx, как подключить xdebug, но пока приходится собирать всё по крупицам. Тем не менее — вот хороший гайд по безопасности PHP-приложений от Mail.ru (!).
Чего только стоит библиотека для автоматической генерации CSP-заголовков.
https://habrahabr.ru/company/mailru/blog/344696/
#php #security
Чего только стоит библиотека для автоматической генерации CSP-заголовков.
https://habrahabr.ru/company/mailru/blog/344696/
#php #security
О копировании кода из интернета.
Сегодня пришлось разобраться в разнице между
#php
Сегодня пришлось разобраться в разнице между
sprintf("%015.2F", $var) и sprintf("%015.2f", $var) — в функции «сумма прописью», которую я скопировал по первому ответу в гугле был именно второй вариант, а он, как оказалось, зависит от локали, и в результате на локальной машине всё было ок, а на стейджинге вылезла ошибка — в результирующей строке не было точки.#php
Когда тебе кажется, что изучил Composer вдоль и поперёк, а потом открываешь эту статью и находишь не одну и не две неизвестные фичи.
https://habrahabr.ru/company/mailru/blog/346488/
Например, как подключить свой форк какого-то пакета, пока там не одобрили твой пул-реквест. Или как принудительно указать версию PHP, для которой нужно искать совместимые пакеты (если локально стоит 7.2, а на сервере 7.1).
#composer #php
https://habrahabr.ru/company/mailru/blog/346488/
Например, как подключить свой форк какого-то пакета, пока там не одобрили твой пул-реквест. Или как принудительно указать версию PHP, для которой нужно искать совместимые пакеты (если локально стоит 7.2, а на сервере 7.1).
#composer #php
Сервис Dependabot подключается к вашему Ruby, JavaScript, Python, PHP, Elixir или Java репозиторию и раз в какое-то время проверяет, не обновились ли какие-то зависимости, и если да — создаёт Pull Request со ссылками на Release Notes или Changelog обновившегося пакета. Очевидно, что если у вас настроен CI, то он ещё и проверит этот PR автотестами.
Это прекрасно! 15 баксов в месяц, если меньше 5 приватных репозиториев, для open source бесплатно. 14 дней триала. Подключить можно через GitHub Marketplace.
#php #composer
Это прекрасно! 15 баксов в месяц, если меньше 5 приватных репозиториев, для open source бесплатно. 14 дней триала. Подключить можно через GitHub Marketplace.
#php #composer
Прекрасный плагин для PHPStorm — PHP Inspections EA
Статический анализатор, который позволяет сделать ваш код ещё лучше. Что покрывает:
• architecture related issues
• weak types control and possible code construct simplifications
• performance issues
• non-optimal, duplicate and suspicious "if" conditions
• validation of magic methods usage
• regular expressions
• validation of exception handling workflow
• compatibility issues
• variety of time-consuming bugs
• PhpUnit API usage
• security issues
У него есть ещё платная версия, в которой проверок ещё больше. В общем, если вы любите писать идеальный код, то статический анализатор прямо в IDE вам понравится.
#php #ide
Статический анализатор, который позволяет сделать ваш код ещё лучше. Что покрывает:
• architecture related issues
• weak types control and possible code construct simplifications
• performance issues
• non-optimal, duplicate and suspicious "if" conditions
• validation of magic methods usage
• regular expressions
• validation of exception handling workflow
• compatibility issues
• variety of time-consuming bugs
• PhpUnit API usage
• security issues
У него есть ещё платная версия, в которой проверок ещё больше. В общем, если вы любите писать идеальный код, то статический анализатор прямо в IDE вам понравится.
#php #ide