#advanced #composer
Надоело ждать PR в ваш любимый фреймворк или библиотеку? Особенно, если это PR в Laravel? Используйте плагин cweagans/composer-patches, который позволяет скачать патч из PR и начать его использовать как часть кода. Статья в поддержку идеи:
https://www.rias.be/blog/using-composer-patches
Надоело ждать PR в ваш любимый фреймворк или библиотеку? Особенно, если это PR в Laravel? Используйте плагин cweagans/composer-patches, который позволяет скачать патч из PR и начать его использовать как часть кода. Статья в поддержку идеи:
https://www.rias.be/blog/using-composer-patches
rias.be
Using composer patches | Rias.be
When you use software that is open source, you'll sometimes run into issues or small bugs that have already been fixed by the community in a PR or an issue, but have yet to be merged and/or released. If you're impatient and need that fix now, composer patches…
#laravel #middle
Интеграция MeiliSearch с Laravel Scout для реализации полнотекстового поиска.
https://tighten.co/blog/full-text-search-with-meilisearch-and-scout/
Интеграция MeiliSearch с Laravel Scout для реализации полнотекстового поиска.
https://tighten.co/blog/full-text-search-with-meilisearch-and-scout/
Tighten
Full-Text Search with MeiliSearch and Laravel Scout
Learn how to add full-text search to your Eloquent models using the free, self-hosted search engine MeiliSearch and Laravel Scout.
#advanced
Если ваш проект чуть больше, чем простой круд, то вы могли задуматься о правильном разделении зависимостей. Deptrac может помочь вам следить за тем, чтобы вы и разработчики из вашей команды не нарушали границ модулей вашего приложения.
https://github.com/sensiolabs-de/deptrac
Если ваш проект чуть больше, чем простой круд, то вы могли задуматься о правильном разделении зависимостей. Deptrac может помочь вам следить за тем, чтобы вы и разработчики из вашей команды не нарушали границ модулей вашего приложения.
https://github.com/sensiolabs-de/deptrac
GitHub
GitHub - deptrac/deptrac: Keep your architecture clean.
Keep your architecture clean. Contribute to deptrac/deptrac development by creating an account on GitHub.
#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
Черновик от Никиты Попова по добавлению аксессоров к свойствам объектов. Например, так может быть реализован доступ для получения свойства, но нельзя будет установить значение вне класса:
User {
public string $name { get; private set; }
public function __construct(string $name) {
$this->name = $name;
}
}
Больше примеров в rfc:
https://wiki.php.net/rfc/property_accessors
#advanced #video
Интересный доклад про будущее сетевого стека.
https://www.youtube.com/watch?v=aXYJlizk3CQ
Интересный доклад про будущее сетевого стека.
https://www.youtube.com/watch?v=aXYJlizk3CQ
YouTube
UDP против TCP, или Будущее сетевого стека / Александр Тоболь (Одноклассники)
Приглашаем на конференцию Saint HighLoad++ 2025, которая пройдет 23 и 24 июня в Санкт-Петербурге!
Программа, подробности и билеты по ссылке: https://highload.ru/spb/2025
________
Saint HighLoad++ 2019
Тезисы и презентация:
https://www.highload.ru/spb…
Программа, подробности и билеты по ссылке: https://highload.ru/spb/2025
________
Saint HighLoad++ 2019
Тезисы и презентация:
https://www.highload.ru/spb…
#advanced #library
Если вы переживаете за типы и следите за их соответствие ожидаемым, можете воспользоваться библиотекой php-matcher. PhpMatcher позволяет вам описать, какие типы вы ожидаете, описать объединенные типы и проверить различные паттерны.
https://github.com/coduo/php-matcher
Если вы переживаете за типы и следите за их соответствие ожидаемым, можете воспользоваться библиотекой php-matcher. PhpMatcher позволяет вам описать, какие типы вы ожидаете, описать объединенные типы и проверить различные паттерны.
https://github.com/coduo/php-matcher
GitHub
GitHub - coduo/php-matcher: The easiest way to match data structures like JSON/PlainText/XML against readable patterns. Sandbox:
The easiest way to match data structures like JSON/PlainText/XML against readable patterns. Sandbox: - coduo/php-matcher
#advanced #security
Как Psalm помогает находить ошибки безопасности в коде.
https://psalm.dev/articles/detect-security-vulnerabilities-with-psalm
Как Psalm помогает находить ошибки безопасности в коде.
https://psalm.dev/articles/detect-security-vulnerabilities-with-psalm
psalm.dev
Detect PHP security vulnerabilities with Psalm
Security vulnerabilities are often pretty hard to spot manually. While a null-pointer error can make itself known very quickly, you can execute code…
#library
Если у вас легаси и вам очень хочется перейти на новую версию php, но нет времени, используйте Rector. Если разработчики из вашей команды не могут договориться об общем code-style, а тратить время на ревью не хочется, используйте Rector.
https://github.com/rectorphp/rector
Если у вас легаси и вам очень хочется перейти на новую версию php, но нет времени, используйте Rector. Если разработчики из вашей команды не могут договориться об общем code-style, а тратить время на ревью не хочется, используйте Rector.
https://github.com/rectorphp/rector
GitHub
GitHub - rectorphp/rector: Instant Upgrades and Automated Refactoring of any PHP 5.3+ code
Instant Upgrades and Automated Refactoring of any PHP 5.3+ code - rectorphp/rector
#advanced
В последнее время тема статического анализа очень популярна среди php разработчиков. Есть популярные инструменты вроде psalm, phpstan, phan и другие, которые помогают следить за выводом типов, за наличием безопасных проверок и многим другим. Но зачем это нужно разработчикам на языке с динамической типизацией? Об этом и многом другом вы узнаете из доклада.
https://www.youtube.com/watch?v=sf39f2q15cU
В последнее время тема статического анализа очень популярна среди 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/
Отрывок из книги Матьяса Нобака "PHP для веба" про исключения и обработку ошибок. Будет полезно в основном начинающим разработчикам.
https://matthiasnoback.nl/2021/02/excerpt-php-for-the-web-error-handling/
matthiasnoback.nl
Excerpt from PHP for the Web: Error handling
Chapter 11: Error handling | Producing an error | Using different configuration settings in production | PHP errors | Summary
#junior
Почему лучше не использовать функцию empty и какие есть альтернативы.
https://beberlei.de/2021/02/19/when_to_use_empty_in_php_i_say_never.html
Почему лучше не использовать функцию empty и какие есть альтернативы.
https://beberlei.de/2021/02/19/when_to_use_empty_in_php_i_say_never.html
www.beberlei.de
When to use empty in PHP? I'd say never
This article contains a list of alternatives to use instead of empty expression.
#advanced #oop
Как на самом деле должны выглядеть объекты, чтобы они отличались от структур и процедур. Рассказывает и показывает Дмитрий Елисеев.
https://elisdn.ru/blog/142/structs-or-objects
Как на самом деле должны выглядеть объекты, чтобы они отличались от структур и процедур. Рассказывает и показывает Дмитрий Елисеев.
https://elisdn.ru/blog/142/structs-or-objects
elisdn.ru
Структуры с процедурами или объекты?
Сравнение процедурной, функциональной и объектно-ориентированной парадигмы. Отделение объектов от структур и процедур. Введение понятия сервиса.
#advanced #refactoring
Пару советов от Матьяса Нобака о том, как начинать что-то рефакторить.
https://matthiasnoback.nl/2021/02/refactoring-prepare-to-stop/
https://matthiasnoback.nl/2021/02/refactoring-set-the-right-goal/
Пару советов от Матьяса Нобака о том, как начинать что-то рефакторить.
https://matthiasnoback.nl/2021/02/refactoring-prepare-to-stop/
https://matthiasnoback.nl/2021/02/refactoring-set-the-right-goal/
matthiasnoback.nl
Successful refactoring projects - Prepare to stop at any time
Refactoring projects | Short-lived branches | What if we have to stop now? | Conclusion
#advanced #refactoring
Продолжение темы рефакторинга от Матьяса Нобака: метод Микадо.
https://matthiasnoback.nl/2021/02/refactoring-the-mikado-method/
Продолжение темы рефакторинга от Матьяса Нобака: метод Микадо.
https://matthiasnoback.nl/2021/02/refactoring-the-mikado-method/
matthiasnoback.nl
Successful refactoring projects - The Mikado Method
Bottom-up development | Top-down development | The Mikado Method | You can stop at any time | Cleaning up and modernizing code: not a prerequisite | Conclusion
#advanced
Сейчас активно развивается тренд про DDD, чистую архитектуру и другие методологии, частично или полностью проповедующие «очищение» бизнес-кода от инфраструктуры. Может показаться, что такие требования принуждают отказаться от фреймворка, однако это не так. Преимущества использования фреймворков хорошо описал Матьяс Нобак:
https://matthiasnoback.nl/2021/02/should-we-use-a-framework/
Сейчас активно развивается тренд про DDD, чистую архитектуру и другие методологии, частично или полностью проповедующие «очищение» бизнес-кода от инфраструктуры. Может показаться, что такие требования принуждают отказаться от фреймворка, однако это не так. Преимущества использования фреймворков хорошо описал Матьяс Нобак:
https://matthiasnoback.nl/2021/02/should-we-use-a-framework/
matthiasnoback.nl
Should we use a framework?
Matthias Noback - Blog | About software development
#advanced #library
Список стандартных функций из нестандартной библиотеки. В данной библиотеке реализованы практически все стандартные PHP функции, но с улучшенной типизацией, полностью покрытые статическим анализом и с некоторыми дополнительными возможностями: ассерт типов, проверка инвариантов и обработка ошибок.
https://github.com/azjezz/psl
Список стандартных функций из нестандартной библиотеки. В данной библиотеке реализованы практически все стандартные PHP функции, но с улучшенной типизацией, полностью покрытые статическим анализом и с некоторыми дополнительными возможностями: ассерт типов, проверка инвариантов и обработка ошибок.
https://github.com/azjezz/psl
GitHub
GitHub - azjezz/psl: 📚 PHP Standard Library - a modern, consistent, centralized, well-typed, non-blocking set of APIs for PHP programmers
📚 PHP Standard Library - a modern, consistent, centralized, well-typed, non-blocking set of APIs for PHP programmers - azjezz/psl
#library
Если вы выбираете для себя библиотеку по конвертации html в markdown и обратно, в этой статье вы найдете список наиболее популярных библиотек со сравнительными характеристиками: самая быстрая, самая гибкая и наиболее поддерживающая все теги маркдауна библиотека.
https://php.watch/articles/php-markdown-libraries
Если вы выбираете для себя библиотеку по конвертации html в markdown и обратно, в этой статье вы найдете список наиболее популярных библиотек со сравнительными характеристиками: самая быстрая, самая гибкая и наиболее поддерживающая все теги маркдауна библиотека.
https://php.watch/articles/php-markdown-libraries
PHP.Watch
Best Markdown libraries for PHP
A comparison of features and performance of Markdown processing libraries for PHP.
#advanced
Матьяс Нобак учит, как тестировать контроллеры, если вы соблюдаете архитектуру Портов и Адаптеров в своем приложении.
https://matthiasnoback.nl/2021/03/testing-controllers-when-you-have-a-decoupled-core/
Матьяс Нобак учит, как тестировать контроллеры, если вы соблюдаете архитектуру Портов и Адаптеров в своем приложении.
https://matthiasnoback.nl/2021/03/testing-controllers-when-you-have-a-decoupled-core/
matthiasnoback.nl
Testing your controllers when you have a decoupled core
Ports and adapters | Left-side adapter tests | Three alternatives | Using the application mock when testing
#advanced #rfc
Наконец-то. Rfc от Никиты Попова предлагает использовать выражения с new в свойствах (статических и нет):
class Test {
public static $prop = new Foo;
public $prop = new Foo;
}
https://wiki.php.net/rfc/new_in_initializers
Наконец-то. Rfc от Никиты Попова предлагает использовать выражения с new в свойствах (статических и нет):
class Test {
public static $prop = new Foo;
public $prop = new Foo;
}
https://wiki.php.net/rfc/new_in_initializers
#advanced #video
Антон Титов, автор RoadRunner и Spiral, рассказывает про temporal.io (сервис для оркестрации сложными и продолжительными бизнес-операциями) и их php sdk.
https://www.youtube.com/watch?v=0NCMEaFMj_M
Антон Титов, автор RoadRunner и Spiral, рассказывает про temporal.io (сервис для оркестрации сложными и продолжительными бизнес-операциями) и их php sdk.
https://www.youtube.com/watch?v=0NCMEaFMj_M
YouTube
Оркестрируй это! Описываем сложные бизнес процессы на PHP - Антон Титов (Spiral Scout)
В современной разработке мы постоянно сталкиваемся с микросервисной архитектурой. Но вскоре после старта разработки (особенно на масштабировании проекта) гарантированно возникают проблемы, о которых умалчивают евангелисты подхода, тем не менее поиск по ним…