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

Надоело ждать PR в ваш любимый фреймворк или библиотеку? Особенно, если это PR в Laravel? Используйте плагин cweagans/composer-patches, который позволяет скачать патч из PR и начать его использовать как часть кода. Статья в поддержку идеи:

https://www.rias.be/blog/using-composer-patches
#advanced

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

https://github.com/sensiolabs-de/deptrac
#advanced #rfc

Черновик от Никиты Попова по добавлению аксессоров к свойствам объектов. Например, так может быть реализован доступ для получения свойства, но нельзя будет установить значение вне класса:

User {
public string $name { get; private set; }

public function __construct(string $name) {
$this->name = $name;
}
}

Больше примеров в rfc:

https://wiki.php.net/rfc/property_accessors
#advanced #library

Если вы переживаете за типы и следите за их соответствие ожидаемым, можете воспользоваться библиотекой php-matcher. PhpMatcher позволяет вам описать, какие типы вы ожидаете, описать объединенные типы и проверить различные паттерны.

https://github.com/coduo/php-matcher
#library

Если у вас легаси и вам очень хочется перейти на новую версию php, но нет времени, используйте Rector. Если разработчики из вашей команды не могут договориться об общем code-style, а тратить время на ревью не хочется, используйте Rector.

https://github.com/rectorphp/rector
#advanced

В последнее время тема статического анализа очень популярна среди php разработчиков. Есть популярные инструменты вроде psalm, phpstan, phan и другие, которые помогают следить за выводом типов, за наличием безопасных проверок и многим другим. Но зачем это нужно разработчикам на языке с динамической типизацией? Об этом и многом другом вы узнаете из доклада.

https://www.youtube.com/watch?v=sf39f2q15cU
#junior

Отрывок из книги Матьяса Нобака "PHP для веба" про исключения и обработку ошибок. Будет полезно в основном начинающим разработчикам.

https://matthiasnoback.nl/2021/02/excerpt-php-for-the-web-error-handling/
#advanced

Сейчас активно развивается тренд про DDD, чистую архитектуру и другие методологии, частично или полностью проповедующие «очищение» бизнес-кода от инфраструктуры. Может показаться, что такие требования принуждают отказаться от фреймворка, однако это не так. Преимущества использования фреймворков хорошо описал Матьяс Нобак:

https://matthiasnoback.nl/2021/02/should-we-use-a-framework/
#advanced #library

Список стандартных функций из нестандартной библиотеки. В данной библиотеке реализованы практически все стандартные PHP функции, но с улучшенной типизацией, полностью покрытые статическим анализом и с некоторыми дополнительными возможностями: ассерт типов, проверка инвариантов и обработка ошибок.

https://github.com/azjezz/psl
#library

Если вы выбираете для себя библиотеку по конвертации html в markdown и обратно, в этой статье вы найдете список наиболее популярных библиотек со сравнительными характеристиками: самая быстрая, самая гибкая и наиболее поддерживающая все теги маркдауна библиотека.

https://php.watch/articles/php-markdown-libraries
#advanced

Матьяс Нобак учит, как тестировать контроллеры, если вы соблюдаете архитектуру Портов и Адаптеров в своем приложении.

https://matthiasnoback.nl/2021/03/testing-controllers-when-you-have-a-decoupled-core/
#advanced #rfc

Наконец-то. Rfc от Никиты Попова предлагает использовать выражения с new в свойствах (статических и нет):

class Test {
public static $prop = new Foo;
public $prop = new Foo;
}

https://wiki.php.net/rfc/new_in_initializers