PHP-BE1
311 subscribers
338 photos
11 videos
19 files
620 links
Канал по PHP, полезный и интересный контент для всех уровней.
По вопросам сотрудничества @cyberJohnny
Download Telegram
#advanced

Пример архитектуры приложения на PHP, основанного на Чистой Архитектуре (как понятия, а не книги) Роберта Мартина.

https://medium.com/engenharia-arquivei/a-decoupled-php-architecture-inspired-by-the-clean-architecture-788b30ab52c2
#laravel

В 8-й версии Laravel среди прочего есть возможность использовать динамические компоненты. Что это такое и как использовать, читайте в статье:

https://www.amitmerchant.com/dynamic-blade-components-in-laravel-8/
#hints

Если вам нужно вызвать поле класса, которое является типом callable, внутри одного из его методов, вместо того чтобы присваивать его переменной и после вызывать, вы можете использовать такую запись:

$result = ($this->fieldAsFunc)($arg);
#junior #web

Из этой статьи вы познакомитесь с основами работы веба: как работает DNS, как устроен HTTP, как взаимодействуют между собой клиент (ваш веб-браузер) и сервер и многое другое.

https://github.com/astaxie/build-web-application-with-golang/blob/master/ru/03.1.md
#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"
#advanced

Если вы задумывались о том, что хотели бы поучаствовать в разработке опенсорс проекта, эта статья расскажет вам, как это делать правильно.

https://johnbraun.blog/posts/contributing-to-a-PHP-package
#testing

Приложение, которое может помочь протестировать входящие http запросы: например, вебхуки. Написано на PHP, кстати. Можно посмотреть исходный код по ссылке
https://httpdump.app/.
#mustread

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

https://github.com/dwmkerr/hacker-laws
#advanced

Анна Филина рассуждает про null как о возвращаемом типе.
https://afilina.com/learn/nulls/return-types
#library

Библиотека для реализации долгоживущих воркеров от Валентина Удальцова.

https://github.com/happy-inc-tech/worker
#advanced

Некоторые приемы асинхронного выполнения кода на 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
#beginner #book

Напоминаем про полезный и актуальный онлайн ресурс по основам языка PHP. Уникальность этого материала состоит в соблюдении современных стандартов написания приложений на PHP и в большом охвате важных тем, как то composer, psr, фреймворки, тестирование и многих других.

https://phptherightway.com/
#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.