Clockwork — отладочная панель для PHP

Clockwork – это библиотека и расширение для браузера предоставляющие удобный интерфейс отладки производительности PHP кода. Расскажу про свой опыт использования и сделаю небольшое сравнение с альтернативами. Как это работает? Сначала устанавливаем библиотеку Clockwork с помощью composer в текущий проект: composer require itsgoingd/clockwork Затем инициализируем где-то в начале жизненного цикла нашего приложения. Есть готовые интеграции для …

ПодробнееClockwork — отладочная панель для PHP

Автоматическое добавление версий файлов с помощью хуков Git

Хорошей практикой при разработке тем и плагинов для WordPress является добавление номеров версий к скриптам и файлам стилей. Если этого не делать, то старые пользователи могут столкнуться с проблемами при обновлениях, ведь они будут получать кэшированные в браузерах старые файлы, а не новые, над которыми вы так усердно работали всю ночь.

ПодробнееАвтоматическое добавление версий файлов с помощью хуков Git

Лучшие практики PHP-разработки на WordPress

Оригинал: https://10up.github.io/Engineering-Best-Practices/php/

Полезные советы по улучшению производительности, безопасности и чистоте кода вашего проекта от компании 10Up — ведущих разработчиков тем и плагинов для WordPress. Крайне рекомендуется к прочтению и многократному повторению материала всем начинающим (и не только!) WP разработчикам. Многие вопросы кажуться банальными и очень простыми в реализации, но тем не менее неправильные и не оптимальные решения встречаются на каждом первом проекте, сделанном с помощью WordPress. Эта статья позволит если не решить все проблемы разработки на PHP для WordPress, то как минимум значительно сократить их число.

ПодробнееЛучшие практики PHP-разработки на WordPress

Лучшие практики для главного файла плагина

После жаркой дискуссии о том, как должен выглядеть главный файл плагина, внутри твита от Mark Jaquith, я решил написать свой вариант. С большинством пунктов я согласен, но об этом позже. Gonna write a blog post about how to structure WordPress plugins in 2020. Brain-dumped these notes. What else should I cover? pic.twitter.com/zMWkljEzlH — Mark Jaquith …

ПодробнееЛучшие практики для главного файла плагина

Состоянии гонки(Race condition) на примере счетчика

Состояние гонки или опасность гонки — это состояние электроники, программного обеспечения или другой системы, в котором основное поведение системы зависит от последовательности или времени других неконтролируемых событий. Это становится ошибкой, когда одно или несколько возможных вариантов поведения нежелательны. Wikipedia Простыми словами, когда мы делаем одновременно несколько запросов и записываем в один источник, будь-то файл или …

ПодробнееСостоянии гонки(Race condition) на примере счетчика

UI тесты для WordPress (Codeception + WP Browser)

UI (E2E, GUI) тесты полностью эмулируют поведение пользователей в браузере. Данные тесты относятся к приемочному(acceptance) виду тестирования. Пишется пошаговый тест, как пользователь должен себя вести в вашем приложении: на какую страницу приложения он зайдет, какую информацию заполнит, какую кнопку нажмет и т.д. Чаще всего такие тесты пишут тестировщики, но иногда и разработчики в зависимости от …

ПодробнееUI тесты для WordPress (Codeception + WP Browser)

Функциональные тесты для WordPress (Codeception + WP Browser)

Функциональные(Приемочные, Acceptance) тесты полностью эмулируют поведение пользователей в браузере. Пишется пошаговый тест, как пользователь должен себя вести в вашем приложении: на какую страницу приложения он зайдет, какую информацию заполнит, какую кнопку нажмет и т.д. Чаще всего такие тесты пишут тестировщики, но иногда и разработчики в зависимости от требований компании. В дальнейшем эти тесты можно и …

ПодробнееФункциональные тесты для WordPress (Codeception + WP Browser)

Объекты передаются по ссылке или нет?

Пятиминутка PHP · Объекты по ссылке или по значению? Часто можно услышать фразу, что в PHP «объекты всегда передаются по ссылке». На самом деле всё немного сложнее. https://www.php.net/manual/ru/language.oop5.references.php Как выглядит работа с ссылками в PHP? Для этого используется специальный синтаксис – перед именем переменной или параметра функции ставится символ амперсанда (&). В том случае, когда …

ПодробнееОбъекты передаются по ссылке или нет?

declare(strict_types=1)

Пятиминутка PHP · declare(strict_types=1) В прошлом выпуске Пятиминутки PHP я рассказал, как обновлял кодовую базу с помощью утилиты Rector. Одно из направлений – простановка типов. Типы в свойствах классов, типы в параметрах функций, типы возвращаемых значений. Но на этом я не остановился. Следующий шаг – проставить declare(strict_types=1)! Весь новый код, который я пишу по умолчанию …

Подробнееdeclare(strict_types=1)

Как преобразовать Telegram канал в RSS поток

Открыл для себя простой способ показать последние записи из Telegram канала на своём сайте под управлением WordPress. Вам не понадобятся навыки программирования, 100500 ботов, регистрация или отправка смс. Всё работает просто и быстро. Берём ссылку: https://rsshub.app/telegram/channel/wordpress_digest И меняем в ней wordpress_digest на ярлык/слаг вашего канала в ТГ. Всё. Для показа данных из этого RSS потока …

ПодробнееКак преобразовать Telegram канал в RSS поток

Rector

Пятиминутка PHP · Rector Rector – это утилита для обновления кодовой базы PHP проекта под современные стандарты. И речь идёт не о PSR-12, а о более интересных преобразованиях, сейчас расскажу! Представьте, что мы хотим добавить больше типизации в код, например, проставить типы возвращаемых из функций значений. Если код написан более-менее прямолинейно и без лишней магии, …

ПодробнееRector

Замена конструкций exit/die в unit-тестах

Если в коде вы используете die/exit то PHPUnit прекратит свою работу в этот момент. Для этого нам нужно заменить конструкцию exit/die. Но это сделать сложно т.к. Functions Mocker с этим не справляется. Пример: class Duck { public function last_words() { die( ‘I’ll be back’ ); } } Меняем класс следующий образом: class Duck { public …

ПодробнееЗамена конструкций exit/die в unit-тестах

Unit tests matter или Roadmap для Unit тестов на WordPress

Теоретические основы тестирования Зачем необходимо тестирование? Какие виды тестирования бывают? Чем юнит-тестирование отличается от других видов тестирования? Кто и как должен тестировать продукт? Библиотеки для тестирования PHPUnit Базовые команды Фикстуры (Fixtures) Бутстрап (bootstrap.php) Утверждения (Asserts) Создания конфигов (phpunit.xml) Code coverage Mockery Стабы/Моки/Шпионы Частичные моки Моки для типов данных Абстрактные классы Hard dependencies Тестирования WordPress: Brain …

ПодробнееUnit tests matter или Roadmap для Unit тестов на WordPress

PhpStorm на macOS Metal

Пятиминутка PHP · PhpStorm на macOS Metal Расскажу про тикет JBR-745 о поддержке Metal в JetBrains Runtime, он же проект Lanai или JEP-382. Станут ли IDE от JetBrains отрисовываться со скоростью 300К FPS? Видео, как я запускаю PhpStorm на Metal: https://youtu.be/T0CShIFwyRw Ссылки по теме: https://youtrack.jetbrains.com/issue/JBR-745 https://en.wikipedia.org/wiki/Metal_(API) https://wiki.openjdk.java.net/display/lanai https://openjdk.java.net/jeps/382 https://www.jetbrains.com/help/idea/switching-boot-jdk.html https://www.infoworld.com/article/3408638/macos-targeted-for-new-java-graphics-pipeline.html Источник: 5minphp.ru