#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 ...
#advanced
В статье автор рассказывает про один из самых часто используемых им паттернов проектирования — декоратор.
https://backendtea.com/post/every-day-design-pattern-decorator/
В статье автор рассказывает про один из самых часто используемых им паттернов проектирования — декоратор.
https://backendtea.com/post/every-day-design-pattern-decorator/
BackEndTea
Every day design pattern: Decorator | BackEndTea
This is the first post in a series of design patterns i use (almost) daily. You will find the other posts at the bottom of this article.
The Decorator pattern On wikipedia, the decorator pattern is described like so:
In object-oriented programming, the decorator…
The Decorator pattern On wikipedia, the decorator pattern is described like so:
In object-oriented programming, the decorator…
#library #middle
Ocramius не только талантливый разработчик (автор Doctrine и ProxyManager), но и веселый парень, он вместе с roave, где сейчас работает, сделали пакет Dont: это простая библиотека с набором трейтов, которая запрещает использовать магические методы. Пожалуй, это лучшее применение трейтов из всех, что можно найти.
https://github.com/Roave/Dont
Ocramius не только талантливый разработчик (автор Doctrine и ProxyManager), но и веселый парень, он вместе с roave, где сейчас работает, сделали пакет Dont: это простая библиотека с набором трейтов, которая запрещает использовать магические методы. Пожалуй, это лучшее применение трейтов из всех, что можно найти.
https://github.com/Roave/Dont
GitHub
GitHub - Roave/Dont: :no_entry_sign: Small set of defensive programming utilities/traits for PHP
:no_entry_sign: Small set of defensive programming utilities/traits for PHP - GitHub - Roave/Dont: :no_entry_sign: Small set of defensive programming utilities/traits for PHP
#advanced #hollywar
В Symfony есть замечательный компонент Request, который предоставляет правильный доступ к данным запроса. В Laravel же тоже есть такой компонент, который расширяет компонент Symfony, добавляя пару удачных методов и ворох ненужных возможностей (например, макросы). Наиболее полный обзор компонента можно увидеть в статье:
https://laravel-news.com/the-mighty-illuminate-request
В Symfony есть замечательный компонент Request, который предоставляет правильный доступ к данным запроса. В Laravel же тоже есть такой компонент, который расширяет компонент Symfony, добавляя пару удачных методов и ворох ненужных возможностей (например, макросы). Наиболее полный обзор компонента можно увидеть в статье:
https://laravel-news.com/the-mighty-illuminate-request
Laravel News
The Mighty Illuminate Request Object
Explore some of the sugar and useful methods that Laravel provides via the Illuminate Request object.
#video
PHPp дайджест в формате видео. Примечателен он тем, что в нем Антон Титов, автор Road Runner, рассказывает про temporal.io, сервис для написания сложных воркфлоу, и их php sdk.
https://youtu.be/3xhOWG8RzEY
PHPp дайджест в формате видео. Примечателен он тем, что в нем Антон Титов, автор Road Runner, рассказывает про temporal.io, сервис для написания сложных воркфлоу, и их php sdk.
https://youtu.be/3xhOWG8RzEY
YouTube
PHP Digest Live #197. Обзор новостей PHP 8.1, Антон Титов про temporal.io — инструмент Uber в PHP
Обзор последних новостей и инструментов из мира PHP. В гостях Антон Титов с рассказом про temporal.io, инструмент, на котором построена архитектура Uber. А также результаты розыгрыша и новый конкурс со слониками.
PHP Дайджест № 197 https://habr.com/ru/post/539034/…
PHP Дайджест № 197 https://habr.com/ru/post/539034/…