Telegram Web Link
Объекты значений в PHP 8: сущности

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

https://dev.to/cnastasi/value-object-in-php-8-entities-1jce

👉 @php_lib
👍4
Создание одностраничного приложения с помощью HTMX и Symfony

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

Это прекрасно для пользователей, поскольку обеспечивает им беспроблемный и интуитивно понятный интерфейс, но это означает, что мы должны каждый день менять наш способ создания веб-сайтов, причем совершенно по-новому. Такие решения, как Symfony UX, начали появляться на свет, чтобы упростить разработку UX-ориентированных компонентов/сайтов. Мы уже рассказывали об этом конкретном инструменте в другой статье блога, и он отлично работает! Однако то, что мы используем Symfony, не делает его единственным вариантом!

Эта статья посвящена библиотеке, которая в последнее время набирает обороты в области библиотек, улучшающих UX, - htmx.

https://jolicode.com/blog/making-a-single-page-application-with-htmx-and-symfony

👉 @php_lib
👍3
PHP Annotated – January 2024

Добро пожаловать в январский выпуск PHP Annotated! Мы расскажем о самых интересных событиях в PHP-сообществе за последний месяц, представив отобранные новости, статьи, инструменты и видео.

https://blog.jetbrains.com/phpstorm/2024/01/php-annotated-january-2024/

👉 @php_lib
👍4
Разработка расширения для PHP на C++. Хуки встроенных функций и методов

PHP - это мощный и широко используемый язык программирования для веб-разработки. Однако иногда требуется расширение функциональности или модификация стандартного поведения PHP с использованием более низкоуровневых языков, таких как C++. В этой статье мы рассмотрим, как создать расширение для PHP на C++ на примере разработки функциональности, позволяющей перехватывать вызовы встроенных функций и методов классов в php.

https://habr.com/ru/articles/779344/

👉 @php_lib
👍3
Genealogy

Бесплатное приложение с открытым исходным кодом (семейное дерево) для записи членов семьи и их взаимоотношений, созданное на PHP (Laravel 10).

https://github.com/MGeurts/genealogy

👉 @php_lib
👍6
Модифицируйте таблицы и записи в режиме реального времени с помощью Laravel Population

Laravel Population - это пакет Laravel, предназначенный для управления миграциями и записями в базе данных. Он значительно упрощает процесс модификации таблиц, избавляя от необходимости создавать новые миграции и обработчики для этих изменений.

https://capsules.codes/en/blog/fyi/en-fyi-modify-tables-and-records-with-laravel-population

👉 @php_lib
👍1
🚨 Защитите свой код от Zip Bomb! 💣🚨

Защитите свои приложения от сильно сжатых Zip-файлов, предназначенных для DoS-атак

💡 проверка количества файлов в архиве
💡 проверьте общий размер несжатых данных
💡 проверьте степень сжатия

👉 @php_lib
👍5
Совет по Laravel💡

Поддерживайте контроллеры, используя ТОЛЬКО 7 методов:

1️⃣ index
2️⃣ create
3️⃣ store
4️⃣ show
5️⃣ edit
6️⃣ update
7️⃣ destroy

Для любых дополнительных методов создайте другой контроллер и используйте эти методы.

👉 @php_lib
🤔8👎5👍3
Serde

Это быстрая, гибкая, мощная и простая в использовании библиотека сериализации и десериализации для PHP, которая поддерживает ряд стандартных форматов. Она черпает вдохновение как в Rust's Serde crate, так и в Symfony Serializer, хотя напрямую не основана ни на одном из них.

На данный момент Serde поддерживает сериализацию PHP-объектов в массивы PHP, JSON, YAML и CSV-файлы и обратно. Он также поддерживает сериализацию в JSON или CSV через поток. Планируется дальнейшая поддержка, но по задумке она может быть расширена любым пользователем.

Установка
$ composer require crell/serde

Использование
use Crell\Serde\SerdeCommon;

$serde = new SerdeCommon();

$object = new SomeClass();
// Populate $object somehow;

$jsonString = $serde->serialize($object, format: 'json');

$deserializedObject = $serde->deserialize($jsonString, from: 'json', to: SomeClass::class);

https://github.com/Crell/Serde

👉 @php_lib
👍6
Как выполнять команды Laravel Artisan с помощью Endpoint API

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

Традиционный способ:

Откройте cPanel или любую другую панель управления, затем перейдите в терминал или зайдите в SSH напрямую, если у вас есть root-доступ,
Затем перейдите в папку с приложениями и запустите нужную команду.

Но эти шаги могут занять много времени.

https://dev.to/yasserelgammal/how-to-execute-laravel-artisan-commands-using-an-api-endpoint-3d49

👉 @php_lib
👍3
Механизмы безопасности в Laravel

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

Мы рассмотрим следующие механизмы безопасности:

Предотвращение N+1
Защита от частично гидрированных моделей
Опечатки атрибутов и переименованные столбцы
Защита от массового присвоения
Строгость модели
Принудительное выполнение полиморфного сопоставления
Мониторинг долгосрочных событий

https://habr.com/ru/articles/794348/

original https://planetscale.com/blog/laravels-safety-mechanisms

👉 @php_lib
👍5
Совет по Laravel 💡

Знаете ли вы, что... вы можете временно отключить timestamps при сохранении модели?

👉 @php_lib
👍9
Практический пример декомпозиции монолитного PHP приложения

Стоит отметить, что сам по себе монолит не является антипаттерном и может отлично работать (и часто работает) при определенных условиях, обычно - когда он выбран осознанно. Но чаще всего монолитная архитектура в проекте не потому, что люди её выбрали, а потому что проект в неё естественно эволюционировал.

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

https://habr.com/ru/articles/796223/

👉 @php_lib
👍4
Ускорение сайта путём выявления проблемных участков кода: xDebug + phpStorm

Статья будет полезна джунам и миддлам кто разрабатывает сайты, кто занимается оптимизацией сайтов и кто хочет посмотреть на работу php кода "с высоты". Для себя из полезного можно узнать как связать вместе OpenServer, PhpStorm и xDebug. Один раз настраиваете и можно потом запросто делать отладку. И так, начнём.

https://habr.com/ru/articles/579434/

👉 @php_lib
👍6
Совет по Laravel 💡

Группировка контроллеров ресурсов с помощью метода "resources()" в Laravel - отличный способ сохранить ваши маршруты аккуратными и организованными, делая ваш код более чистым и поддерживаемым.

👉 @php_lib
👍4👎2
This media is not supported in your browser
VIEW IN TELEGRAM
Добавлены новые методы whereAny и whereAll в Laravel 10.47.

👉 @php_lib
👍62
Как реализовать простую очередь в Symfony

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

1️⃣Установка необходимых пакетов: Используйте Composer для установки компонента Symfony Messenger и адаптера Redis.

2️⃣Настройка транспорта: Настройте подключение к серверу Redis в файле .env, указав расположение сервера и желаемое имя очереди.

3️⃣Создание сообщения и обработчика: Используйте команды Symfony console для создания классов сообщения и соответствующего обработчика. Эти классы представляют данные для отправки и логику, которая будет выполнена при получении сообщения.

4️⃣Маршрутизация сообщения к транспорту: Настройте компонент Messenger для связывания класса сообщения с желаемым транспортом в файле messenger.yaml.

5️⃣Отправка сообщения: Используйте службу MessageBusInterface для отправки сообщений из различных частей приложения, таких как контроллеры или службы.

6️⃣Получение сообщения: Используйте команду messenger:consume, чтобы запустить рабочий процесс, прослушивающий указанный транспорт и выполняющий соответствующий обработчик. Можно запускать несколько рабочих процессов параллельно для увеличения пропускной способности.


https://dev.to/daniyaljavani/how-to-implement-a-simple-queue-in-symfony-530a

👉 @php_lib
👍3
2025/07/08 13:29:38
Back to Top
HTML Embed Code: