Как протестировать маршруты в Symfony , чтобы подготовиться к серьёзному рефакторингу
https://tomasvotruba.com/blog/how-to-test-symfony-routes-to-make-huge-refactorings-safe/
👉 @php_lib
https://tomasvotruba.com/blog/how-to-test-symfony-routes-to-make-huge-refactorings-safe/
👉 @php_lib
Tomasvotruba
How to test Symfony Routes to make Huge Refactoring Safe
The beauty of [pattern refactoring](/blog/2019/04/15/pattern-refactoring/) with Rector is transforming thousands of elements at once. Like nuclear chain reaction. But to do it safely, we need a high-quality test to ensure the code still works.
Does a high…
Does a high…
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
Почему стоит использовать 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
Хочу поделиться с вами опытом в парсинге XML файлов размером до четырёх гигабайт. Я научу вас, как это делать быстро.
В двух словах для быстрого парсинга файлов надо пользоваться XMLReader в связке с yield..
https://habr.com/ru/post/712106/
👉 @php_lib
Хабр
Работаем с XML как с массивом, версия 2
Всем привет. Хочу поделиться с вами опытом в парсинге XML файлов размером до четырёх гигабайт. Что бы это происходило быстро, надо читать файл последовательно, частями, парсить только нужные элементы....
👍3
Парсинг HTML с помощью PHP и SQL. Немного провокационный пример с анализом пользователей Хабра
Выковыривание информации из html — это скучно. Очень. Между тем, эта потребность выстреливает редко, но метко (© Суворов). Из-за этого есть спрос на готовые и короткие инструкции о том, как это сделать, чтобы не тратить время на изучение. Перед вами как раз такая.
Чтобы добавить хоть какой-то интерес скучнейшему занятию мы для примера будем парсить пользователей Хабра. А чтобы не мелочиться — ещё и реанимируем для этого экспериментальную библиотеку 11-летней давности.
https://habr.com/ru/post/709262/
👉 @php_lib
Выковыривание информации из html — это скучно. Очень. Между тем, эта потребность выстреливает редко, но метко (© Суворов). Из-за этого есть спрос на готовые и короткие инструкции о том, как это сделать, чтобы не тратить время на изучение. Перед вами как раз такая.
Чтобы добавить хоть какой-то интерес скучнейшему занятию мы для примера будем парсить пользователей Хабра. А чтобы не мелочиться — ещё и реанимируем для этого экспериментальную библиотеку 11-летней давности.
https://habr.com/ru/post/709262/
👉 @php_lib
Хабр
Парсинг HTML с помощью PHP и SQL. Немного провокационный пример с анализом пользователей Хабра
Выковыривание информации из html — это скучно. Очень. Между тем, эта потребность выстреливает редко, но метко (© Суворов). Из-за этого есть спрос на готовые и короткие инструкции о том, как это...
👍2
TLDR - Плагин для PhpStorm с поддержкой искусственного интеллекта, который объясняет код на простом английском языке.
https://plugins.jetbrains.com/plugin/20050-tldr
👉 @php_lib
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
Сегодня хочу поговорить о том, как ускорить приложение через конфигурирование 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
Хочу описать свои наработки и устоявшиеся подходы к тестированию 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
Это мое личное руководство по использованию перечислений в PHP. Каждый раздел описывает правило, а также личное мнение, стоящее за этим правилом.
https://stitcher.io/blog/php-enum-style-guide
👉 @php_lib
stitcher.io
My PHP enum style guide - stitcher.io
A blog about modern PHP, the web, and programming in general. Follow my newsletter and YouTube channel as well.
👍8
Auth for API in 5 minutes via Symfony 6
Иногда разработчику нужно в кратчайшие сроки разработать некий минимальный функционал, отдельно от основного приложения, ведь так быстрее и нет всей этой бюрократии с релизами код ревью, согласованиями и месяцами тестирования.
Для этого разработчик создает новый репозиторий и там реализует свое “чудо”. Это может быть как автономный инструмент который считает процент прибавок к зарплате за сверхурочные в зависимости от ставки и выслуги лет, так и более сложная система с доступом корпоративной базе данных.
https://habr.com/ru/post/669590/
👉 @php_lib
Иногда разработчику нужно в кратчайшие сроки разработать некий минимальный функционал, отдельно от основного приложения, ведь так быстрее и нет всей этой бюрократии с релизами код ревью, согласованиями и месяцами тестирования.
Для этого разработчик создает новый репозиторий и там реализует свое “чудо”. Это может быть как автономный инструмент который считает процент прибавок к зарплате за сверхурочные в зависимости от ставки и выслуги лет, так и более сложная система с доступом корпоративной базе данных.
https://habr.com/ru/post/669590/
👉 @php_lib
👍1
Простой бенчмарк для PHP приложений
Очень часто приходится сравнивать время выполнения кода с целью выбора наиболее оптимального решения, и каждый раз для этого приходилось писать обработчик с расчётом времени обработки, после чего все результаты заносились в какую-нибудь таблицу Excel и вручную рассчитывалось минимальное, максимальное и среднее время выполнения...
Для решения этой тривиальной задачи был выпущен пакет "Benchmark", позволяющий сравнивать время выполнения кода без лишних затрат.
https://habr.com/ru/post/714802/
👉 @php_lib
Очень часто приходится сравнивать время выполнения кода с целью выбора наиболее оптимального решения, и каждый раз для этого приходилось писать обработчик с расчётом времени обработки, после чего все результаты заносились в какую-нибудь таблицу 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
Отсутствие коллекций — боль в заднице PHP. На данный момент нет удобного способа обеспечить безопасность типов для наборов объектов. Я постоянно создаю коллекции, но это означает, что нужно создавать новый класс каждый раз, когда нужна безопасность типов для набора данных.
https://telegra.ph/Generaciya-strogo-tipizirovannyh-kollekcij-v-PHP-02-12
👉 @php_lib
Telegraph
Генерация строго-типизированных коллекций в PHP
Отсутствие коллекций — боль в заднице PHP. На данный момент нет удобного способа обеспечить безопасность типов для наборов объектов. Я постоянно создаю коллекции, но это означает, что нужно создавать новый класс каждый раз, когда нужна безопасность типов…
👍3
Как правильно проверять сложность пароля пользователя при регистрации
За десятилетия айтишки сложилась практика ограничивать пользователей в сложности их паролей. Сейчас пароль пользователя должен:
быть не меньше N символов;
&& быть не больше M символов (чуть реже встречается такое правило);
Содержать хотя бы одну большую букву;
Содержать хотя бы одну маленькую букву;
Содержать хотя бы одну цифру;
Содержать хотя бы один спецсимвол;
https://habr.com/ru/post/714478/
👉 @php_lib
За десятилетия айтишки сложилась практика ограничивать пользователей в сложности их паролей. Сейчас пароль пользователя должен:
быть не меньше N символов;
&& быть не больше M символов (чуть реже встречается такое правило);
Содержать хотя бы одну большую букву;
Содержать хотя бы одну маленькую букву;
Содержать хотя бы одну цифру;
Содержать хотя бы один спецсимвол;
https://habr.com/ru/post/714478/
👉 @php_lib
👍5
PHP | imagecopyresampled() function
https://www.geeksforgeeks.org/php-imagecopyresampled-function/
👉 @php_lib
https://www.geeksforgeeks.org/php-imagecopyresampled-function/
👉 @php_lib
GeeksforGeeks
PHP | imagecopyresampled() function - GeeksforGeeks
Your All-in-One Learning Portal: GeeksforGeeks is a comprehensive educational platform that empowers learners across domains-spanning computer science and programming, school education, upskilling, commerce, software tools, competitive exams, and more.
👍1
Чистим пхпшный код с помощью DTO
При написании нового метода или сервиса мы стараемся его максимально абстрагировать от внешних зависимостей, чтобы новый функционал реализовывал только заложенную ему логику. Об этом, собственно, нам и говорит один из принципов SOLID - Принцип единственной ответственности (single responsibility principle).
https://telegra.ph/CHistim-phpshnyj-kod-s-pomoshchyu-DTO-02-12
👉 @php_lib
При написании нового метода или сервиса мы стараемся его максимально абстрагировать от внешних зависимостей, чтобы новый функционал реализовывал только заложенную ему логику. Об этом, собственно, нам и говорит один из принципов SOLID - Принцип единственной ответственности (single responsibility principle).
https://telegra.ph/CHistim-phpshnyj-kod-s-pomoshchyu-DTO-02-12
👉 @php_lib
Telegraph
Чистим пхпшный код с помощью DTO
При написании нового метода или сервиса мы стараемся его максимально абстрагировать от внешних зависимостей, чтобы новый функционал реализовывал только заложенную ему логику. Об этом, собственно, нам и говорит один из принципов SOLID - Принцип единственной…
👍2
(Singly) Linked Lists explained in PHP
https://doeken.org/blog/linked-lists-explained-in-php
👉 @php_lib
https://doeken.org/blog/linked-lists-explained-in-php
👉 @php_lib
👍3
В очередь, ...! Как управлять состоянием системы через события
Существует множество разных подходов к построению архитектуры серверных приложений. В данной статье рассмотрим Event-driven архитектуру (она же событийно-ориентированная). Рассмотрим основные принципы, как перейти от связей Компонент А <-> Компонент В, к связям через события Компонент А -> Событие B -> Компонент B, и зачем это нужно.
https://habr.com/ru/post/699492/
👉 @php_lib
Существует множество разных подходов к построению архитектуры серверных приложений. В данной статье рассмотрим Event-driven архитектуру (она же событийно-ориентированная). Рассмотрим основные принципы, как перейти от связей Компонент А <-> Компонент В, к связям через события Компонент А -> Событие B -> Компонент B, и зачем это нужно.
https://habr.com/ru/post/699492/
👉 @php_lib
👍2