#advanced
Пример архитектуры приложения на PHP, основанного на Чистой Архитектуре (как понятия, а не книги) Роберта Мартина.
https://medium.com/engenharia-arquivei/a-decoupled-php-architecture-inspired-by-the-clean-architecture-788b30ab52c2
Пример архитектуры приложения на PHP, основанного на Чистой Архитектуре (как понятия, а не книги) Роберта Мартина.
https://medium.com/engenharia-arquivei/a-decoupled-php-architecture-inspired-by-the-clean-architecture-788b30ab52c2
Medium
A decoupled PHP architecture inspired by the Clean Architecture
How we create APIs and workers in PHP that won’t be a pain in a few years.
#laravel
В 8-й версии Laravel среди прочего есть возможность использовать динамические компоненты. Что это такое и как использовать, читайте в статье:
https://www.amitmerchant.com/dynamic-blade-components-in-laravel-8/
В 8-й версии Laravel среди прочего есть возможность использовать динамические компоненты. Что это такое и как использовать, читайте в статье:
https://www.amitmerchant.com/dynamic-blade-components-in-laravel-8/
Amit Merchant - A blog on PHP, JavaScript, and more
Dynamic blade components in Laravel 8
With the release of Laravel 8, you can now render Blade components dynamically using a built-in component called dynamic-component.
#advanced
Почему статические методы иногда могут быть злом, заражающим ваш код.
https://tomasvotruba.com/blog/2020/08/31/how-static-methods-kills-you-like-corona/
Почему статические методы иногда могут быть злом, заражающим ваш код.
https://tomasvotruba.com/blog/2020/08/31/how-static-methods-kills-you-like-corona/
Tomasvotruba
How Static Methods Kill You Like Corona
Do you know [the Broken Window theory](https://blog.codinghorror.com/the-broken-window-theory/)? It's a social pattern in code, a great post written by a guy behind one small manual website - StackOverflow.
If you combine this theory and Static Methods…
If you combine this theory and Static Methods…
#advanced
Способ гидрации массива в объекты через конструктор.
https://tomasvotruba.com/blog/2020/04/20/how-to-hydrate-arrays-to-objects-via-constructor/
Способ гидрации массива в объекты через конструктор.
https://tomasvotruba.com/blog/2020/04/20/how-to-hydrate-arrays-to-objects-via-constructor/
Tomasvotruba
How to Hydrate Arrays to Objects via Constructor
One technology evolution sparks naturally another one. When electricity became accessible to masses, a huge industry of home-electric tools became possible. Like this tool, I currently write on.
The same thing happens in software, just exponentially faster.…
The same thing happens in software, just exponentially faster.…
#junior #web
Из этой статьи вы познакомитесь с основами работы веба: как работает DNS, как устроен HTTP, как взаимодействуют между собой клиент (ваш веб-браузер) и сервер и многое другое.
https://github.com/astaxie/build-web-application-with-golang/blob/master/ru/03.1.md
Из этой статьи вы познакомитесь с основами работы веба: как работает DNS, как устроен HTTP, как взаимодействуют между собой клиент (ваш веб-браузер) и сервер и многое другое.
https://github.com/astaxie/build-web-application-with-golang/blob/master/ru/03.1.md
GitHub
build-web-application-with-golang/ru/03.1.md at master · astaxie/build-web-application-with-golang
A golang ebook intro how to build a web with golang - astaxie/build-web-application-with-golang
#hints
Если метод или функция, которые вы вызываете, требует от вас аргумент типа callable, вы можете передать туда не только реальный Closure, но и массив вида: [new ClassName(), 'methodInsideClass']
Пример:
final class PHP
{
public function do()
{
return 'some';
}
}
function call(callable $func)
{
return $func();
}
var_dump(call([new PHP(), 'do'])); // string(5) "some"
Если метод или функция, которые вы вызываете, требует от вас аргумент типа callable, вы можете передать туда не только реальный Closure, но и массив вида: [new ClassName(), 'methodInsideClass']
Пример:
final class PHP
{
public function do()
{
return 'some';
}
}
function call(callable $func)
{
return $func();
}
var_dump(call([new PHP(), 'do'])); // string(5) "some"
#advanced
Нарушение правила зависимости и их решение.
https://matthiasnoback.nl/2020/09/violating-the-dependency-rule/
Нарушение правила зависимости и их решение.
https://matthiasnoback.nl/2020/09/violating-the-dependency-rule/
Matthias Noback
Violating the Dependency rule
I write about design rules a lot, but I sometimes forget to:
Mention that these rules can’t always be applied, Describe when that would be the case, and Add examples of situations where the rule really doesn’t matter. The rules should work in most cases,…
Mention that these rules can’t always be applied, Describe when that would be the case, and Add examples of situations where the rule really doesn’t matter. The rules should work in most cases,…
#advanced
Несколько советов по рефакторингу PHP кода.
https://christoph-rumpel.com/2020/8/refactoring-php
Несколько советов по рефакторингу PHP кода.
https://christoph-rumpel.com/2020/8/refactoring-php
Christoph-Rumpel
Refactoring PHP
I've been programming in PHP now for almost ten years, and if there is one thing I learned over this period, it's that readability and simplicity are the keys for maintainable and sustainable code. Every first attempt to write code should be about making…
#advanced
Если вы задумывались о том, что хотели бы поучаствовать в разработке опенсорс проекта, эта статья расскажет вам, как это делать правильно.
https://johnbraun.blog/posts/contributing-to-a-PHP-package
Если вы задумывались о том, что хотели бы поучаствовать в разработке опенсорс проекта, эта статья расскажет вам, как это делать правильно.
https://johnbraun.blog/posts/contributing-to-a-PHP-package
#video
5 книг, которые должен прочитать каждый разработчик, по мнению Дейва Фарли, автора книги «Непрерывное развертывание ПО».
https://youtu.be/RfOYWeu5pGk
5 книг, которые должен прочитать каждый разработчик, по мнению Дейва Фарли, автора книги «Непрерывное развертывание ПО».
https://youtu.be/RfOYWeu5pGk
YouTube
5 Books That Can Change A Developer’s Career
What are the best software developer books? This is obviously a subjective question. The best books for a software engineer or developer are always going to be a personal choice, and vary by their interests and maybe the technology that they work in, but…
#testing
Приложение, которое может помочь протестировать входящие http запросы: например, вебхуки. Написано на PHP, кстати. Можно посмотреть исходный код по ссылке
https://httpdump.app/.
Приложение, которое может помочь протестировать входящие http запросы: например, вебхуки. Написано на PHP, кстати. Можно посмотреть исходный код по ссылке
https://httpdump.app/.
#mustread
Большой пополняемый список знаний, в который включены теории, законы, принципы, паттерны разработки и многое другое, что однозначно будет полезно знать каждому разработчику.
https://github.com/dwmkerr/hacker-laws
Большой пополняемый список знаний, в который включены теории, законы, принципы, паттерны разработки и многое другое, что однозначно будет полезно знать каждому разработчику.
https://github.com/dwmkerr/hacker-laws
GitHub
GitHub - dwmkerr/hacker-laws: 🧠 Laws, Theories, Principles and Patterns for developers and technologists.
🧠 Laws, Theories, Principles and Patterns for developers and technologists. - dwmkerr/hacker-laws
#advanced
Анна Филина рассуждает про null как о возвращаемом типе.
https://afilina.com/learn/nulls/return-types
Анна Филина рассуждает про null как о возвращаемом типе.
https://afilina.com/learn/nulls/return-types
#library
Библиотека для реализации долгоживущих воркеров от Валентина Удальцова.
https://github.com/happy-inc-tech/worker
Библиотека для реализации долгоживущих воркеров от Валентина Удальцова.
https://github.com/happy-inc-tech/worker
GitHub
GitHub - happy-inc-tech/worker
Contribute to happy-inc-tech/worker development by creating an account on GitHub.
#advanced
Некоторые приемы асинхронного выполнения кода на PHP. В статьях показаны в основном олдускульные способы, не упоминаются amphp и reactphp, но есть и интересные возможности. Так, например, ларавел и симфони уже используют директиву fastcgi_finish_request, которая позволяет отдать ответ клиенту и после этого выполнить еще код.
https://proglib.io/w/fe2d0b56
Некоторые приемы асинхронного выполнения кода на PHP. В статьях показаны в основном олдускульные способы, не упоминаются amphp и reactphp, но есть и интересные возможности. Так, например, ларавел и симфони уже используют директиву fastcgi_finish_request, которая позволяет отдать ответ клиенту и после этого выполнить еще код.
https://proglib.io/w/fe2d0b56
#advanced #whyphp
Статья от любителя PHP. Возможно, добавит вам аргументы в копилку к вопросу о том, почему вы пишете на PHP.
https://medium.com/swlh/stop-saying-php-is-dead-9489ed7dc25e
Статья от любителя PHP. Возможно, добавит вам аргументы в копилку к вопросу о том, почему вы пишете на PHP.
https://medium.com/swlh/stop-saying-php-is-dead-9489ed7dc25e
Medium
Stop Saying PHP Is Dead.
It isn’t. PHP is not dead. It isn’t dying and it isn’t reaching “end-of-life”.
#beginner #book
Напоминаем про полезный и актуальный онлайн ресурс по основам языка PHP. Уникальность этого материала состоит в соблюдении современных стандартов написания приложений на PHP и в большом охвате важных тем, как то composer, psr, фреймворки, тестирование и многих других.
https://phptherightway.com/
Напоминаем про полезный и актуальный онлайн ресурс по основам языка PHP. Уникальность этого материала состоит в соблюдении современных стандартов написания приложений на PHP и в большом охвате важных тем, как то composer, psr, фреймворки, тестирование и многих других.
https://phptherightway.com/
#advanced #laravel
Стейт-машина для моделей Eloquent'а.
https://github.com/asantibanez/laravel-eloquent-state-machines
Стейт-машина для моделей Eloquent'а.
https://github.com/asantibanez/laravel-eloquent-state-machines
GitHub
GitHub - asantibanez/laravel-eloquent-state-machines: State Machines for your Laravel Eloquent models
State Machines for your Laravel Eloquent models. Contribute to asantibanez/laravel-eloquent-state-machines development by creating an account on GitHub.
#advanced
Используем CORS для реализации защиты от CSRF.
https://www.mixmax.com/engineering/modern-csrf/
Используем CORS для реализации защиты от CSRF.
https://www.mixmax.com/engineering/modern-csrf/
Mixmax
Using CORS policies to implement CSRF protection | Mixmax
Cross-Site Request Forgery (CSRF) allows an attacker to make unauthorized requests on behalf of a user. We tackle CSRFs while allowing a subset of Cross-Origin requests.
#framework_digest
Laravel:
1. В 9-ю версию одного из самых популярных и быстро меняющего версий развивающихся фреймворков предлагают добавить параллельный запуск тестов:
https://github.com/laravel/framework/pull/35778
Тесты должны стать быстрее. Если вам не терпится попробовать быстрые тесты уже сейчас, вы можете поставить ... Symfony. Это не совсем шутка, медленные тесты в Laravel связаны в основном с Eloquent, который не позволяет так просто замокать данные в тестах.
2. Один из недавно закрытых PR добавляет возможность запускать слушатели только после того, как текущая активная транзакция выполнится успешно: https://github.com/laravel/framework/pull/35434
Реализация странная, но возможность полезная.
3. Такой же PR есть и для очередей: https://github.com/laravel/framework/pull/35422
Аналогично предыдущему PR сообщения в очередь попадут только после завершения транзакции.
Symfony:
1. Планируется добавить транспорт для Kafka в symfony/messenger:
https://github.com/symfony/symfony/pull/39712
2. Еще один полезный PR в symfony/messenger, добавляющий RouterContextMiddleware, который позволит для асинхронных обработчиков получить доступ к возможностям роутера для генерации абсолютного урла, хоста и т.д, например, для генерации ссылки в письме: https://github.com/symfony/symfony/pull/39688
3. Интеграция компонента Notifier с MessageBus: https://github.com/symfony/symfony/pull/39353
4. Планируется добавить новый компонент Encryption: https://github.com/symfony/symfony/pull/39344. Компонент сделал Nyholm, так что, вероятнее всего, что он точно попадет в релиз одной из следующих версий фреймворка. К PR приложен подробный обзор, зачем нужен компонент и что использует, предлагаем ознакомиться.
5. Интересный спор на тему, нужно ли логаутить пользователя при смене его роли или нет: https://github.com/symfony/symfony/issues/39763
6. Ишьюс, автор которого предлагает добавить в Symfony компонент Scheduler: https://github.com/symfony/symfony/issues/39719. Пример реализации уже есть: https://github.com/Guikingone/symfony/tree/_component/scheduler/src/Symfony/Component/Scheduler. Аналогичный компонент давно существует в Laravel.
Laravel:
1. В 9-ю версию одного из самых популярных и быстро меняющего версий развивающихся фреймворков предлагают добавить параллельный запуск тестов:
https://github.com/laravel/framework/pull/35778
Тесты должны стать быстрее. Если вам не терпится попробовать быстрые тесты уже сейчас, вы можете поставить ... Symfony. Это не совсем шутка, медленные тесты в Laravel связаны в основном с Eloquent, который не позволяет так просто замокать данные в тестах.
2. Один из недавно закрытых PR добавляет возможность запускать слушатели только после того, как текущая активная транзакция выполнится успешно: https://github.com/laravel/framework/pull/35434
Реализация странная, но возможность полезная.
3. Такой же PR есть и для очередей: https://github.com/laravel/framework/pull/35422
Аналогично предыдущему PR сообщения в очередь попадут только после завершения транзакции.
Symfony:
1. Планируется добавить транспорт для Kafka в symfony/messenger:
https://github.com/symfony/symfony/pull/39712
2. Еще один полезный PR в symfony/messenger, добавляющий RouterContextMiddleware, который позволит для асинхронных обработчиков получить доступ к возможностям роутера для генерации абсолютного урла, хоста и т.д, например, для генерации ссылки в письме: https://github.com/symfony/symfony/pull/39688
3. Интеграция компонента Notifier с MessageBus: https://github.com/symfony/symfony/pull/39353
4. Планируется добавить новый компонент Encryption: https://github.com/symfony/symfony/pull/39344. Компонент сделал Nyholm, так что, вероятнее всего, что он точно попадет в релиз одной из следующих версий фреймворка. К PR приложен подробный обзор, зачем нужен компонент и что использует, предлагаем ознакомиться.
5. Интересный спор на тему, нужно ли логаутить пользователя при смене его роли или нет: https://github.com/symfony/symfony/issues/39763
6. Ишьюс, автор которого предлагает добавить в Symfony компонент Scheduler: https://github.com/symfony/symfony/issues/39719. Пример реализации уже есть: https://github.com/Guikingone/symfony/tree/_component/scheduler/src/Symfony/Component/Scheduler. Аналогичный компонент давно существует в Laravel.
GitHub
[9.x] Adds support for Parallel Testing by nunomaduro · Pull Request #35778 · laravel/framework
This pull request adds support for Parallel Testing in Laravel 9.
Docs: https://github.com/laravel/docs/pull/6737/files.
How you can help
You can help testing this pull request by running tests in ...
Docs: https://github.com/laravel/docs/pull/6737/files.
How you can help
You can help testing this pull request by running tests in ...