#advanced
Способ гидрации массива в объекты через конструктор.
https://tomasvotruba.com/blog/2020/04/20/how-to-hydrate-arrays-to-objects-via-constructor/
Способ гидрации массива в объекты через конструктор.
https://tomasvotruba.com/blog/2020/04/20/how-to-hydrate-arrays-to-objects-via-constructor/
Tomasvotruba
How to Hydrate Arrays to Objects via Constructor
One technology evolution sparks naturally another one. When electricity became accessible to masses, a huge industry of home-electric tools became possible. Like this tool, I currently write on.
The same thing happens in software, just exponentially faster.…
The same thing happens in software, just exponentially faster.…
#junior #web
Из этой статьи вы познакомитесь с основами работы веба: как работает DNS, как устроен HTTP, как взаимодействуют между собой клиент (ваш веб-браузер) и сервер и многое другое.
https://github.com/astaxie/build-web-application-with-golang/blob/master/ru/03.1.md
Из этой статьи вы познакомитесь с основами работы веба: как работает DNS, как устроен HTTP, как взаимодействуют между собой клиент (ваш веб-браузер) и сервер и многое другое.
https://github.com/astaxie/build-web-application-with-golang/blob/master/ru/03.1.md
GitHub
build-web-application-with-golang/ru/03.1.md at master · astaxie/build-web-application-with-golang
A golang ebook intro how to build a web with golang - astaxie/build-web-application-with-golang
#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
Несколько советов по рефакторингу 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.