#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)
В современной разработке мы постоянно сталкиваемся с микросервисной архитектурой. Но вскоре после старта разработки (особенно на масштабировании проекта) гарантированно возникают проблемы, о которых умалчивают евангелисты подхода, тем не менее поиск по ним…
#junior
Многие начинающие разработчики сталкиваются с непониманием работы сессий. И неудивительно, выбрав для первого изучения фреймворк, а не язык, разработчики упускают из виду самые основы веб-разработки. Эта исчерпывающая статья расскажет про нативный механизм сессий, про распространённые ошибки, про нестандартные возможности и многом другом.
https://anton.shevchuk.name/php/php-for-beginners-session/
Многие начинающие разработчики сталкиваются с непониманием работы сессий. И неудивительно, выбрав для первого изучения фреймворк, а не язык, разработчики упускают из виду самые основы веб-разработки. Эта исчерпывающая статья расскажет про нативный механизм сессий, про распространённые ошибки, про нестандартные возможности и многом другом.
https://anton.shevchuk.name/php/php-for-beginners-session/
Anton Shevchuk
PHP для начинающих. Сессия
Всем хорошего дня. Перед вами первая статья из серии PHP для начинающих разработчиков. Это будет необычная серия статей, тут не будет echo "Hello World", тут будет hardcore из жизни PHP программистов с небольшой примесью "домашней работы" для закрепления…