Библиотека PHP программиста 👨🏼‍💻👩‍💻
2.17K subscribers
329 photos
169 videos
7 files
337 links
Полезные материалы по PHP, Laravel, Symfony, CodeIgniter, CakePHP, Phalcon

По всем вопросам @evgenycarter
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Полностью автоматический RESTful PHP Router

Почему стоит использовать Scrawler Router?
Полностью автоматический, вам не нужно определять ни одного маршрута вручную.
Никаких конфигураций, работает из коробки с любым php проектом.
Стабилен и используется внутри многих проектов Corpuvision.
Экономит много времени при создании RESTful приложений

https://github.com/scrawler-labs/router

👉 @php_lib
Работаем с XML как с массивом

Хочу поделиться с вами опытом в парсинге XML файлов размером до четырёх гигабайт. Я научу вас, как это делать быстро.
В двух словах для быстрого парсинга файлов надо пользоваться XMLReader в связке с yield..

https://habr.com/ru/post/712106/

👉 @php_lib
👍3
Парсинг HTML с помощью PHP и SQL. Немного провокационный пример с анализом пользователей Хабра

Выковыривание информации из html — это скучно. Очень. Между тем, эта потребность выстреливает редко, но метко (© Суворов). Из-за этого есть спрос на готовые и короткие инструкции о том, как это сделать, чтобы не тратить время на изучение. Перед вами как раз такая.

Чтобы добавить хоть какой-то интерес скучнейшему занятию мы для примера будем парсить пользователей Хабра. А чтобы не мелочиться — ещё и реанимируем для этого экспериментальную библиотеку 11-летней давности.

https://habr.com/ru/post/709262/

👉 @php_lib
👍2
TLDR - Плагин для PhpStorm с поддержкой искусственного интеллекта, который объясняет код на простом английском языке.

https://plugins.jetbrains.com/plugin/20050-tldr

👉 @php_lib
👏5
Как ускорить приложение за счёт PHP-FPM (няшим FPM conf)

Сегодня хочу поговорить о том, как ускорить приложение через конфигурирование PHP-FPM.

Сейчас самый популярный (из тех с которыми я сталкивался) стек на котором поднимается PHP приложение это веб сервер nginx и процесс-менеджер php-fpm.

Я хочу поднять простое приложение с Laravel проектом, которое устанавливается со всеми параметрами по умолчанию. Попробуем это приложение нагрузить пользователями с помощью простого Javascript скрипта и посмотрим как ему удастся справиться с нагрузкой и как мы можем повысить обрабатываемую нагрузку только конфигурированием php-fpm. В конце статьи можно будет найти ссылку на GitHub и попробовать своими руками.

https://habr.com/ru/post/576344/

👉 @php_lib
👍7
Тестирование PHP проектов на примере Symfony

Хочу описать свои наработки и устоявшиеся подходы к тестированию PHP проектов. Последние годы я работаю с Symfony и здесь будет достаточно моментов специфичных для этого фреймворка. Так же в этой статье термин функциональные тесты (functional) является синонимом End-to-End тестов. Статья рассчитана на разработчиков уже знакомых с PHPUnit и Symfony, структурой composer файла. Врочем, здесь есть и общеизвестные моменты, чтобы облегчить понимание тем, кто только начинает писать тесты. Статья призвана упорядочить знания и показать какие-то удобные подходы. Формат статьи не позволяет раскрыть все нюансы. Тем не менее, я постараюсь озвучить все основные моменты, применяемые в работе и которые лично мне помогают на практике.

https://habr.com/ru/post/713454/

👉 @php_lib
👍3
Гайд по enum

Это мое личное руководство по использованию перечислений в PHP. Каждый раздел описывает правило, а также личное мнение, стоящее за этим правилом.

https://stitcher.io/blog/php-enum-style-guide

👉 @php_lib
👍8
Auth for API in 5 minutes via Symfony 6


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

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

https://habr.com/ru/post/669590/

👉 @php_lib
👍1
Простой бенчмарк для PHP приложений

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

Для решения этой тривиальной задачи был выпущен пакет "Benchmark", позволяющий сравнивать время выполнения кода без лишних затрат.

https://habr.com/ru/post/714802/

👉 @php_lib
👍4
Генерация строго-типизированных коллекций в PHP

Отсутствие коллекций — боль в заднице PHP. На данный момент нет удобного способа обеспечить безопасность типов для наборов объектов. Я постоянно создаю коллекции, но это означает, что нужно создавать новый класс каждый раз, когда нужна безопасность типов для набора данных.

https://telegra.ph/Generaciya-strogo-tipizirovannyh-kollekcij-v-PHP-02-12

👉 @php_lib
👍3
Как правильно проверять сложность пароля пользователя при регистрации

За десятилетия айтишки сложилась практика ограничивать пользователей в сложности их паролей. Сейчас пароль пользователя должен:

быть не меньше N символов;
&& быть не больше M символов (чуть реже встречается такое правило);
Содержать хотя бы одну большую букву;
Содержать хотя бы одну маленькую букву;
Содержать хотя бы одну цифру;
Содержать хотя бы один спецсимвол;

https://habr.com/ru/post/714478/

👉 @php_lib
👍5
Чистим пхпшный код с помощью DTO

При написании нового метода или сервиса мы стараемся его максимально абстрагировать от внешних зависимостей, чтобы новый функционал реализовывал только заложенную ему логику. Об этом, собственно, нам и говорит один из принципов SOLID - Принцип единственной ответственности (single responsibility principle).

https://telegra.ph/CHistim-phpshnyj-kod-s-pomoshchyu-DTO-02-12

👉 @php_lib
👍2
В очередь, ...! Как управлять состоянием системы через события

Существует множество разных подходов к построению архитектуры серверных приложений. В данной статье рассмотрим Event-driven архитектуру (она же событийно-ориентированная). Рассмотрим основные принципы, как перейти от связей Компонент А <-> Компонент В, к связям через события Компонент А -> Событие B -> Компонент B, и зачем это нужно.

https://habr.com/ru/post/699492/

👉 @php_lib
👍2