Разработка пакетов Laravel : Ключевые шаги к созданию эффективного инструмента
Возможно, вы уже видели или использовали такие пакеты Laravel, как Sanctum, Passport, Nova и многие другие. Но задумывались ли вы когда-нибудь, как можно упаковать и развернуть свою разработку в пакет с любой логикой и поделиться им с другими разработчиками в сообществе Laravel?
Одной из ключевых особенностей фреймворка Laravel является экосистема пакетов, которые предоставляют потрясающие возможности для создания высококачественных приложений.
Пакеты - это основной способ добавления любой функциональности в проекты Laravel. Это может быть что угодно - от набора стилей и скриптов до сложной бизнес-логики и API-интеграций.
Код пакетов может быть как самостоятельным, так и служить дополнением к определенному фреймворку, и может разрабатываться и поддерживаться разными разработчиками.
В этой статье мы сосредоточимся на написании пакетов для фреймворка Laravel.
Концепция разработки пакетов включает в себя такие понятия, как ServiceProvider, Facades, Contracts. Все эти элементы обеспечивают стабильную работу приложений от тестирования до продакшена.
ServiceProvider - это точка контакта между контейнером приложения и вашим пакетом. Через него осуществляется управление всеми ресурсами приложения. Инъекция зависимостей - это лучшее, что можно придумать.
https://dev.to/dnsinyukov/laravel-package-development-key-steps-to-building-an-effective-tool-2a7a
👉 @php_lib
Возможно, вы уже видели или использовали такие пакеты Laravel, как Sanctum, Passport, Nova и многие другие. Но задумывались ли вы когда-нибудь, как можно упаковать и развернуть свою разработку в пакет с любой логикой и поделиться им с другими разработчиками в сообществе Laravel?
Одной из ключевых особенностей фреймворка Laravel является экосистема пакетов, которые предоставляют потрясающие возможности для создания высококачественных приложений.
Пакеты - это основной способ добавления любой функциональности в проекты Laravel. Это может быть что угодно - от набора стилей и скриптов до сложной бизнес-логики и API-интеграций.
Код пакетов может быть как самостоятельным, так и служить дополнением к определенному фреймворку, и может разрабатываться и поддерживаться разными разработчиками.
В этой статье мы сосредоточимся на написании пакетов для фреймворка Laravel.
Концепция разработки пакетов включает в себя такие понятия, как ServiceProvider, Facades, Contracts. Все эти элементы обеспечивают стабильную работу приложений от тестирования до продакшена.
ServiceProvider - это точка контакта между контейнером приложения и вашим пакетом. Через него осуществляется управление всеми ресурсами приложения. Инъекция зависимостей - это лучшее, что можно придумать.
https://dev.to/dnsinyukov/laravel-package-development-key-steps-to-building-an-effective-tool-2a7a
👉 @php_lib
👍3
✨ Советы по Laravel ✨
Если вы создаете API в своем проекте:
🪐 Применяйте версионирование в самом первом релизе
🪐 Поддерживайте чистоту в routes/api.php, создавая разные файлы маршрутов для каждой версии👇
🧹 Более чистый код, 📈 Лучшие результаты
👉 @php_lib
Если вы создаете API в своем проекте:
🪐 Применяйте версионирование в самом первом релизе
🪐 Поддерживайте чистоту в routes/api.php, создавая разные файлы маршрутов для каждой версии👇
🧹 Более чистый код, 📈 Лучшие результаты
👉 @php_lib
👍8
Объекты значений в PHP 8: создание лучшего кода. Часть 1
В мире программирования поддержание качества кода на должном уровне имеет большое значение.
Паттерн Value Object способен значительно улучшить качество вашего кода, сделав его более надежным и удобным для сопровождения.
В этой статье я расскажу о том, как реализовать паттерн и как это позволит добавить немного "сахара" в ваш код, используя последние возможности, представленные в PHP 8.1 и PHP 8.2.
https://dev.to/cnastasi/value-objects-in-php-8-building-a-better-code-38k8
👉 @php_lib
В мире программирования поддержание качества кода на должном уровне имеет большое значение.
Паттерн Value Object способен значительно улучшить качество вашего кода, сделав его более надежным и удобным для сопровождения.
В этой статье я расскажу о том, как реализовать паттерн и как это позволит добавить немного "сахара" в ваш код, используя последние возможности, представленные в PHP 8.1 и PHP 8.2.
https://dev.to/cnastasi/value-objects-in-php-8-building-a-better-code-38k8
👉 @php_lib
👍3
Совет по Laravel 💡
Знаете ли вы, что диапазоны Eloquent можно использовать при определении других отношений?
👉 @php_lib
Знаете ли вы, что диапазоны Eloquent можно использовать при определении других отношений?
👉 @php_lib
👍5
Объекты значений в PHP 8: расширенное использование. Часть 2
В предыдущей статье мы рассмотрели возможности объектов значений в повышении качества кода, надежности системы и минимизации необходимости обширной валидации. Теперь давайте погрузимся глубже, чтобы улучшить понимание и использование этого важнейшего инструмента.
https://dev.to/cnastasi/advanced-value-objects-in-php-8-1lp0
👉 @php_lib
В предыдущей статье мы рассмотрели возможности объектов значений в повышении качества кода, надежности системы и минимизации необходимости обширной валидации. Теперь давайте погрузимся глубже, чтобы улучшить понимание и использование этого важнейшего инструмента.
https://dev.to/cnastasi/advanced-value-objects-in-php-8-1lp0
👉 @php_lib
👍3
Объекты значений в PHP 8: сущности
В предыдущих статьях мы узнали, как создавать фундаментальные объекты ценности, и осознали их роль в повышении стабильности и надежности наших приложений.
В этой статье мы рассмотрим еще один архитектурный паттерн, тесно связанный с объектами ценности: Сущности.
https://dev.to/cnastasi/value-object-in-php-8-entities-1jce
👉 @php_lib
В предыдущих статьях мы узнали, как создавать фундаментальные объекты ценности, и осознали их роль в повышении стабильности и надежности наших приложений.
В этой статье мы рассмотрим еще один архитектурный паттерн, тесно связанный с объектами ценности: Сущности.
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
С появлением множества доступных сегодня 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
Добро пожаловать в январский выпуск 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
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
Бесплатное приложение с открытым исходным кодом (семейное дерево) для записи членов семьи и их взаимоотношений, созданное на 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
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
Защитите свои приложения от сильно сжатых Zip-файлов, предназначенных для DoS-атак
💡 проверка количества файлов в архиве
💡 проверьте общий размер несжатых данных
💡 проверьте степень сжатия
👉 @php_lib
👍5
Совет по Laravel💡
Поддерживайте контроллеры, используя ТОЛЬКО 7 методов:
1️⃣ index
2️⃣ create
3️⃣ store
4️⃣ show
5️⃣ edit
6️⃣ update
7️⃣ destroy
Для любых дополнительных методов создайте другой контроллер и используйте эти методы.
👉 @php_lib
Поддерживайте контроллеры, используя ТОЛЬКО 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 через поток. Планируется дальнейшая поддержка, но по задумке она может быть расширена любым пользователем.
Установка
Использование
https://github.com/Crell/Serde
👉 @php_lib
Это быстрая, гибкая, мощная и простая в использовании библиотека сериализации и десериализации для 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
GitHub
GitHub - Crell/Serde: Robust Serde (serialization/deserialization) library for PHP 8.
Robust Serde (serialization/deserialization) library for PHP 8. - Crell/Serde
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
Автономный взлом веб-приложений PHP на уровне байткода
https://finixbit.github.io/posts/autonomous-Hacking-of-PHP-Web-Applications-at-the-Bytecode-Level/
👉 @php_lib
https://finixbit.github.io/posts/autonomous-Hacking-of-PHP-Web-Applications-at-the-Bytecode-Level/
👉 @php_lib
❤2👍1
Как выполнять команды 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
При развертывании приложений 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
Laravel - это веб-фреймворк на PHP с встроенной поддержкой практически всего, что нужно современным приложениям. Но мы не будем рассматривать все эти функции здесь. Вместо этого мы рассмотрим безопасные функции Laravel, которые могут помочь вам предотвратить болезненные ошибки.
Мы рассмотрим следующие механизмы безопасности:
Предотвращение N+1
Защита от частично гидрированных моделей
Опечатки атрибутов и переименованные столбцы
Защита от массового присвоения
Строгость модели
Принудительное выполнение полиморфного сопоставления
Мониторинг долгосрочных событий
https://habr.com/ru/articles/794348/
original https://planetscale.com/blog/laravels-safety-mechanisms
👉 @php_lib
👍5
Мой процесс написания пакетов для Laravel
https://dcblog.dev/my-process-for-writing-laravel-packages
👉 @php_lib
https://dcblog.dev/my-process-for-writing-laravel-packages
👉 @php_lib
👍4
Совет по Laravel 💡
Знаете ли вы, что... вы можете временно отключить
👉 @php_lib
Знаете ли вы, что... вы можете временно отключить
timestamps
при сохранении модели?👉 @php_lib
👍9
Практический пример декомпозиции монолитного PHP приложения
Стоит отметить, что сам по себе монолит не является антипаттерном и может отлично работать (и часто работает) при определенных условиях, обычно - когда он выбран осознанно. Но чаще всего монолитная архитектура в проекте не потому, что люди её выбрали, а потому что проект в неё естественно эволюционировал.
Прежде всего, давайте проясним, что мы имеем в виду под "декомпозицией монолита". Какая наша конечная цель? Какие могут быть бизнес-цели, побуждающие инженеров решать эту проблему?
https://habr.com/ru/articles/796223/
👉 @php_lib
Стоит отметить, что сам по себе монолит не является антипаттерном и может отлично работать (и часто работает) при определенных условиях, обычно - когда он выбран осознанно. Но чаще всего монолитная архитектура в проекте не потому, что люди её выбрали, а потому что проект в неё естественно эволюционировал.
Прежде всего, давайте проясним, что мы имеем в виду под "декомпозицией монолита". Какая наша конечная цель? Какие могут быть бизнес-цели, побуждающие инженеров решать эту проблему?
https://habr.com/ru/articles/796223/
👉 @php_lib
👍4