Мутации в микросервисах: применяем Temporal
В прошлой статье была поставлена задача о надёжных мутациях и транзакциях в архитектуре Профи, в этой статье разберём один из вариантов решения — применить workflow-engine Temporal.
https://habr.com/ru/articles/772084/
👉 @php_lib
В прошлой статье была поставлена задача о надёжных мутациях и транзакциях в архитектуре Профи, в этой статье разберём один из вариантов решения — применить workflow-engine Temporal.
https://habr.com/ru/articles/772084/
👉 @php_lib
🔥2👍1
Совет по PHP
Хотите преобразовать массив в объект?
Просто используйте (object) перед массивом.
https://github.com/laravel/pulse/blob/acd68f8bebd3bc5a66ff74e421f7fd3a0001c582/src/Livewire/Exceptions.php#L47
👉 @php_lib
Хотите преобразовать массив в объект?
Просто используйте (object) перед массивом.
https://github.com/laravel/pulse/blob/acd68f8bebd3bc5a66ff74e421f7fd3a0001c582/src/Livewire/Exceptions.php#L47
👉 @php_lib
🤡4👍2😁1🤣1🤪1
Ручная пила для PHP-монолита
Это третья и заключительная часть истории поиска надёжного способа работы с транзакциями в распределённых системах.
В первой части мы поставили задачу, определили критерии оценки и набросали варианты. Во второй части я подробно разобрал решение на Temporal. В этой статье расскажу чем в итоге всё закончилось, а точнее с чего начнётся.
Статья может быть полезна разработчикам и архитекторам, которые задумываются о вынесении части бизнес-логики из монолита, написанного на PHP.
https://habr.com/ru/articles/776794/
👉 @php_lib
Это третья и заключительная часть истории поиска надёжного способа работы с транзакциями в распределённых системах.
В первой части мы поставили задачу, определили критерии оценки и набросали варианты. Во второй части я подробно разобрал решение на Temporal. В этой статье расскажу чем в итоге всё закончилось, а точнее с чего начнётся.
Статья может быть полезна разработчикам и архитекторам, которые задумываются о вынесении части бизнес-логики из монолита, написанного на PHP.
https://habr.com/ru/articles/776794/
👉 @php_lib
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Недокументированная возможность в Phpstorm: нативная консоль php -a с автодополнением из IDE
В прошлой статье я уже рассказывал о том, что можно использовать консоль Xdebug как аналог Python Console в Phpstorm. В комментариях меня спросили, чем не подходит для этого нативная консоль php, которую можно вызвать командой php -a (Php Interactive Shell, далее в тексте будет просто консоль Php). Я тогда ответил, что она не интегрирована с IDE, и у нее нет соответствующих фич, таких как автодополнение. Однако недавно выяснилось, что на самом деле ее можно "интегрировать" с Phpstorm одним хитрым способом. Дело в том, что ее тоже можно запустить в режиме отладки, и тогда в качестве консоли отладки будет она сама. А в консоли отладки уже доступно автодополнение из IDE.
https://habr.com/ru/articles/779548/
👉 @php_lib
В прошлой статье я уже рассказывал о том, что можно использовать консоль Xdebug как аналог Python Console в Phpstorm. В комментариях меня спросили, чем не подходит для этого нативная консоль php, которую можно вызвать командой php -a (Php Interactive Shell, далее в тексте будет просто консоль Php). Я тогда ответил, что она не интегрирована с IDE, и у нее нет соответствующих фич, таких как автодополнение. Однако недавно выяснилось, что на самом деле ее можно "интегрировать" с Phpstorm одним хитрым способом. Дело в том, что ее тоже можно запустить в режиме отладки, и тогда в качестве консоли отладки будет она сама. А в консоли отладки уже доступно автодополнение из IDE.
https://habr.com/ru/articles/779548/
👉 @php_lib
👍4🤔2
Выходя за рамки ООП. Разработка расширений для PHP на PHP
Какие есть границы в PHP? Синтаксические они или это рантайм, или же просто ограничения языка, которые нельзя обойти. Почему они существуют? Давайте посмотрим как преодолеть границы живого языка и как взломать его изнутри. Это же всегда интересно?
В этом нам поможет Александр Лисаченко. Он автор аспектно-ориентированного фреймворка Go! AOP и вообще гуру в Enterprise архитектуре.
https://habr.com/ru/companies/oleg-bunin/articles/577658/
👉 @php_lib
Какие есть границы в PHP? Синтаксические они или это рантайм, или же просто ограничения языка, которые нельзя обойти. Почему они существуют? Давайте посмотрим как преодолеть границы живого языка и как взломать его изнутри. Это же всегда интересно?
В этом нам поможет Александр Лисаченко. Он автор аспектно-ориентированного фреймворка Go! AOP и вообще гуру в Enterprise архитектуре.
https://habr.com/ru/companies/oleg-bunin/articles/577658/
👉 @php_lib
👍1🤔1
Защитите свое приложение Laravel от различных атак с помощью этого пакета
По мере роста популярности вашего приложения оно становится мишенью для различных атак. И даже если оно не так популярно, существуют боты, которые постоянно ищут уязвимости в вашем приложении.
Поэтому всегда полезно защищать свое приложение от таких атак. И если вы используете Laravel, есть пакет Laravel Firewall, который может помочь вам в этом. Это WAF (Web Application Firewall) для Laravel.
По сути, это пакет, который поможет вам защитить ваше приложение Laravel от различных атак, таких как XSS, SQLi, RFI, LFI, User Agent и т. д. Для этого он блокирует вредоносные запросы к вашему приложению.
Вы защищаете свое приложение от этих атак на уровне маршрутов. Таким образом, вы можете указать, какие маршруты вы хотите защитить от тех или иных атак.
https://www.amitmerchant.com/laravel-firewall/
👉 @php_lib
По мере роста популярности вашего приложения оно становится мишенью для различных атак. И даже если оно не так популярно, существуют боты, которые постоянно ищут уязвимости в вашем приложении.
Поэтому всегда полезно защищать свое приложение от таких атак. И если вы используете Laravel, есть пакет Laravel Firewall, который может помочь вам в этом. Это WAF (Web Application Firewall) для Laravel.
По сути, это пакет, который поможет вам защитить ваше приложение Laravel от различных атак, таких как XSS, SQLi, RFI, LFI, User Agent и т. д. Для этого он блокирует вредоносные запросы к вашему приложению.
Вы защищаете свое приложение от этих атак на уровне маршрутов. Таким образом, вы можете указать, какие маршруты вы хотите защитить от тех или иных атак.
https://www.amitmerchant.com/laravel-firewall/
👉 @php_lib
👍5
Совет по PHP/Laravel 💡
Вместо того чтобы выполнять цикл `
👉 @php_lib
Вместо того чтобы выполнять цикл `
foreach
` по массиву для поиска значения записи, вы можете использовать метод Laravel Collection `contains()`
.👉 @php_lib
👍14
🚀 Знаете ли вы, как протестировать `redirect back()` в Laravel?
🧪 Используйте простые и понятные тесты для ваших маршрутов. 🌐✨
🧪 Используйте мощь функции `
https://github.com/MrPunyapal/basic-crud/blob/main/tests/Feature/Http/Controllers/LocaleControllerTest.php
👉 @php_lib
🧪 Используйте простые и понятные тесты для ваших маршрутов. 🌐✨
🧪 Используйте мощь функции `
from
` от PestPHP для создания простых и понятных тестов! 🌐✨https://github.com/MrPunyapal/basic-crud/blob/main/tests/Feature/Http/Controllers/LocaleControllerTest.php
👉 @php_lib
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Скрытый Трейт В Laravel - ForwardCalls
В этом видео мы рассмотрим скрытый трейт, который присутствует в Laravel, и его название ForwardsCalls. Вы также можете использовать его в своем проекте, если захотите.
👉 @php_lib
В этом видео мы рассмотрим скрытый трейт, который присутствует в Laravel, и его название ForwardsCalls. Вы также можете использовать его в своем проекте, если захотите.
👉 @php_lib
👍2
Совет по Laravel 💡
Вам нужно использовать одни и те же правила проверки пароля для разных маршрутов пользователей (например, при регистрации и создании панели администратора)?
Обратите внимание на функцию
Ознакомьтесь со всеми правилами в документации: https://github.com/illuminate/validation/blob/master/Rules/Password.php
👉 @php_lib
Вам нужно использовать одни и те же правила проверки пароля для разных маршрутов пользователей (например, при регистрации и создании панели администратора)?
Обратите внимание на функцию
`Password::defaults()`
. Ознакомьтесь со всеми правилами в документации: https://github.com/illuminate/validation/blob/master/Rules/Password.php
👉 @php_lib
👍5
Лучшие практики использования перечислений в PHP
Хотя перечисления в PHP призваны обеспечить простое и элегантное решение для работы с предопределенным набором значений, эти классы часто используются неправильно, что приводит к отсутствию согласованности из-за внедрения всевозможных методов, которые увеличивают их сложность. В этой статье мы рассмотрим некоторые методы (как хорошие, так и плохие) с целью прояснить понимание этих типов объектов, чтобы помочь вам построить более устойчивую и последовательную кодовую базу.
https://jeffochoa.me/php-enums-best-practices
👉 @php_lib
Хотя перечисления в PHP призваны обеспечить простое и элегантное решение для работы с предопределенным набором значений, эти классы часто используются неправильно, что приводит к отсутствию согласованности из-за внедрения всевозможных методов, которые увеличивают их сложность. В этой статье мы рассмотрим некоторые методы (как хорошие, так и плохие) с целью прояснить понимание этих типов объектов, чтобы помочь вам построить более устойчивую и последовательную кодовую базу.
https://jeffochoa.me/php-enums-best-practices
👉 @php_lib
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
🧪 Советы и рекомендации PhpStorm - Измененные цвета строк
Когда вы изменяете свой код, вы можете увидеть небольшой цветовой индикатор сбоку. Когда вы щелкаете по нему, вы даже видите, что было изменено. (список изменений)
Используемые цвета определяются вашей темой. Но, как и все в PhpStorm, вы можете изменить эти цвета. Проверьте настройки "Color Scheme -> VCS" и "Color Scheme -> Diff & Merge".
👉 @php_lib
Когда вы изменяете свой код, вы можете увидеть небольшой цветовой индикатор сбоку. Когда вы щелкаете по нему, вы даже видите, что было изменено. (список изменений)
Используемые цвета определяются вашей темой. Но, как и все в PhpStorm, вы можете изменить эти цвета. Проверьте настройки "Color Scheme -> VCS" и "Color Scheme -> Diff & Merge".
👉 @php_lib
👍1
Совет Laravel для чекбоксов в формах
Чтобы сохранить проверенное состояние после ошибок валидации, используйте директиву Blade "checked" с методами `
Не забудьте включить пустой массив в качестве запасного варианта.
Пример https://laraveldaily.com/lesson/laravel-array-validation-all-you-need-to-know/validate-single-dimension-array-with-checkboxes
👉 @php_lib
Чтобы сохранить проверенное состояние после ошибок валидации, используйте директиву Blade "checked" с методами `
in_array()
` и `old()
`. Не забудьте включить пустой массив в качестве запасного варианта.
Пример https://laraveldaily.com/lesson/laravel-array-validation-all-you-need-to-know/validate-single-dimension-array-with-checkboxes
👉 @php_lib
👍4
The Laravel Survival Guide
DevDojo
Почему именно эта книга? На самом деле, это не совсем книга, а скорее руководство, которое поможет вам и другим не стать "зомби-разработчиками".
Что же такое "зомби-разработчик"? Это такой же разработчик, как и мы, который бездумно ковыряется в PHP-приложениях, повторяя одни и те же задачи снова и снова. Эти повторяющиеся задачи могут быть невероятно утомительными и в конечном итоге превращают мозг в кашицу. Когда это происходит, разработчики повсеместно превращаются в бездумных зомби с жаждой крови и желанием убивать.
Однако есть средство: фреймворк Laravel, предназначенный для быстрой разработки приложений. Освоив Laravel, вы сможете заново открыть в себе страсть к написанию кода и побороть в себе "зомби". Это руководство призвано сохранить ваше здравомыслие, сделав работу над кодом снова приятной. И да, это может спасти жизнь!
Освоив основы Laravel, вы сможете уберечь себя и, возможно, других от превращения в бездумного зомби-разработчика.
Не позволяйте внутреннему зомби процветать, держите под рукой руководство по выживанию Laravel.
👉 @php_lib
DevDojo
Почему именно эта книга? На самом деле, это не совсем книга, а скорее руководство, которое поможет вам и другим не стать "зомби-разработчиками".
Что же такое "зомби-разработчик"? Это такой же разработчик, как и мы, который бездумно ковыряется в PHP-приложениях, повторяя одни и те же задачи снова и снова. Эти повторяющиеся задачи могут быть невероятно утомительными и в конечном итоге превращают мозг в кашицу. Когда это происходит, разработчики повсеместно превращаются в бездумных зомби с жаждой крови и желанием убивать.
Однако есть средство: фреймворк Laravel, предназначенный для быстрой разработки приложений. Освоив Laravel, вы сможете заново открыть в себе страсть к написанию кода и побороть в себе "зомби". Это руководство призвано сохранить ваше здравомыслие, сделав работу над кодом снова приятной. И да, это может спасти жизнь!
Освоив основы Laravel, вы сможете уберечь себя и, возможно, других от превращения в бездумного зомби-разработчика.
Не позволяйте внутреннему зомби процветать, держите под рукой руководство по выживанию Laravel.
👉 @php_lib
👍4👎3
Docker
Докер с нуля - практический пример. Как запустить docker nginx, php-fpm, mysql, phpmyadmin
Yii2 в Docker: настройка веб-сервера, установка Yii в контейнер
Самый быстрый способ поднятия проекта на Yii2 с помощью Docker
Подключение к базе данных и выполнение миграций Yii2 в Docker
Исправляем ошибку подключения к MySQL при выполнении миграций Yii2 в контейнере Docker
источник
👉 @php_lib
Докер с нуля - практический пример. Как запустить docker nginx, php-fpm, mysql, phpmyadmin
Yii2 в Docker: настройка веб-сервера, установка Yii в контейнер
Самый быстрый способ поднятия проекта на Yii2 с помощью Docker
Подключение к базе данных и выполнение миграций Yii2 в Docker
Исправляем ошибку подключения к MySQL при выполнении миграций Yii2 в контейнере Docker
источник
👉 @php_lib
👍8