Разбираемся, как работает воркеры очередей в Laravel.
https://divinglaravel.com/queue-workers-how-they-work
https://divinglaravel.com/queue-workers-how-they-work
Frank De Jonge, автор Flysystem, рассказывает о том, какие типы событий бывают в event-driven системах.
https://blog.frankdejonge.nl/the-different-types-of-events-in-event-driven-systems/
https://blog.frankdejonge.nl/the-different-types-of-events-in-event-driven-systems/
Советы по оптимизации гидрации объектов в Doctrine ORM от Окрамиуса.
https://ocramius.github.io/blog/doctrine-orm-optimization-hydration/
https://ocramius.github.io/blog/doctrine-orm-optimization-hydration/
ocramius.github.io
Doctrine ORM Hydration Performance Optimization
Hydration is the most expensive operation performed by Doctrine ORM: how do we prevent it from killing our applications?
👍1
Сложное объяснение основ устройства индексов в Postgres для тех, кто хочет глубже разобраться в теме.
https://patshaughnessy.net/2014/11/11/discovering-the-computer-science-behind-postgres-indexes
https://patshaughnessy.net/2014/11/11/discovering-the-computer-science-behind-postgres-indexes
👍2
Создание API с использованием TDD в Laravel
https://laravel.io/index.php/articles/building-an-api-using-tdd-in-laravel
#API #Laravel #Testing
👉 @php_lib
https://laravel.io/index.php/articles/building-an-api-using-tdd-in-laravel
#API #Laravel #Testing
👉 @php_lib
👍2
Обнаружение проблем n+1 через лотерейный подход, то есть запускаем проверку не каждый раз, а с некоторым шансом. Также как сделана в Laravel очистка сессий.
https://timacdonald.me/introducing-lazy-loading-prevention-into-an-existing-laravel-application/
👉 @php_lib
https://timacdonald.me/introducing-lazy-loading-prevention-into-an-existing-laravel-application/
👉 @php_lib
👍1
Ресурсы для API в Laravel
Вы узнаете, что такое Ресурсы и как их использовать для API в Laravel-приложениях.
Ресурсы (Resources) — дополнительный слой поверх Eloquent-моделей. Они позволяют поддерживать единый формат возвращаемых данных. Плюс позволяют отсекать лишние или секретные данные, например, пароли и токены.
#Laravel
👉 @php_lib
Вы узнаете, что такое Ресурсы и как их использовать для API в Laravel-приложениях.
Ресурсы (Resources) — дополнительный слой поверх Eloquent-моделей. Они позволяют поддерживать единый формат возвращаемых данных. Плюс позволяют отсекать лишние или секретные данные, например, пароли и токены.
#Laravel
👉 @php_lib
👍2
😁8👍1👏1
Готовимся к собеседованию по PHP: Что такое «DI», «Container», «Auto-wiring» за семь простых шагов
Статья написана для начинающих разработчиков на языке PHP, чтобы помочь им усвоить понятия, нужные для понимания того, как устроены и работают современные фреймворки на PHP: Dependency Injection, Container, Auto-wiring.
#PHP #Symfony #Yii #Laravel
👉 @php_lib
Статья написана для начинающих разработчиков на языке PHP, чтобы помочь им усвоить понятия, нужные для понимания того, как устроены и работают современные фреймворки на PHP: Dependency Injection, Container, Auto-wiring.
#PHP #Symfony #Yii #Laravel
👉 @php_lib
Хабр
Готовимся к собеседованию по PHP: Что такое «DI», «Container», «Auto-wiring» за семь простых шагов
Для кого и для чего написана статья? Статья написана для начинающих разработчиков на языке PHP, чтобы помочь им усвоить понятия, нужные для понимания того, как устроены и работают современные...
👍3
Копирование объектов классов
При присваивании объекта класса другой переменной создается новая ссылка на тот же объект.
class Person{
public $name;
function __construct($name){
$this->name = $name;
}
}
$tom = new Person("Tom");
$bob = $tom;
$bob->name = "Bob";
echo $tom->name; // Bob
👉 @php_lib
При присваивании объекта класса другой переменной создается новая ссылка на тот же объект.
class Person{
public $name;
function __construct($name){
$this->name = $name;
}
}
$tom = new Person("Tom");
$bob = $tom;
$bob->name = "Bob";
echo $tom->name; // Bob
👉 @php_lib
Telegraph
Копирование объектов классов
При присваивании объекта класса другой переменной создается новая ссылка на тот же объект. Например: class Person{ public $name; function __construct($name){ $this->name = $name; } } $tom = new Person("Tom"); $bob = $tom;…
👍2
Типизация данных
В отличие от ряда языков программирования в PHP при определении переменных или параметров функций можно не указывать тип данных. Однако в принципе PHP в ряде ситуаций - при определении свойств классов, параметров или возвращаемого значения функций - позволяет указать тип данных. Установка типа данных позволит избежать ситуаций, когда в программу будут переданы данные не тех типов, которые ожидалась разработчиком. Далее
👉 @php_lib
В отличие от ряда языков программирования в PHP при определении переменных или параметров функций можно не указывать тип данных. Однако в принципе PHP в ряде ситуаций - при определении свойств классов, параметров или возвращаемого значения функций - позволяет указать тип данных. Установка типа данных позволит избежать ситуаций, когда в программу будут переданы данные не тех типов, которые ожидалась разработчиком. Далее
👉 @php_lib
Telegraph
Типизация данных
В отличие от ряда языков программирования в PHP при определении переменных или параметров функций можно не указывать тип данных. Однако в принципе PHP в ряде ситуаций - при определении свойств классов, параметров или возвращаемого значения функций - позволяет…
👍3
Статический анализ в PHP
Все мы привыкли к определению, что PHP – это язык со слабой динамической типизацией. В этом одновременно его преимущество и недостаток. Преимущества заключаются в том, что вы имеете больше возможностей по работе с динамическими данными: вызывать функции или объекты из строки, передавать и возвращать mixed типы и многое другое.
👉 @php_lib
Все мы привыкли к определению, что PHP – это язык со слабой динамической типизацией. В этом одновременно его преимущество и недостаток. Преимущества заключаются в том, что вы имеете больше возможностей по работе с динамическими данными: вызывать функции или объекты из строки, передавать и возвращать mixed типы и многое другое.
👉 @php_lib
👍3
Пробуем KPHP: реально ли его использовать в своих проектах
ВК - крупнейшая социальная сеть в России. Её код изначально был написан на PHP - языке, позволяющим быстро реализовывать функционал веб-сайтов. Однако, PHP является интерпретируемым языком, что само собой не есть хорошо для высоких нагрузок. Далее
#KPHP
👉 @php_lib
ВК - крупнейшая социальная сеть в России. Её код изначально был написан на PHP - языке, позволяющим быстро реализовывать функционал веб-сайтов. Однако, PHP является интерпретируемым языком, что само собой не есть хорошо для высоких нагрузок. Далее
#KPHP
👉 @php_lib
👍2
Как обновить большие массивы данных в Laravel
Иногда вам необходимо обновить данные в вашей базе данных. Самая простая возможность - просто запустить обновление в базе данных MySQL. Но это не всегда работает. Особенно если вы используете события или хотите обновить отношения .....
https://42coders.com/how-to-update-large-data-in-laravel
#Laravel
👉 @php_lib
Иногда вам необходимо обновить данные в вашей базе данных. Самая простая возможность - просто запустить обновление в базе данных MySQL. Но это не всегда работает. Особенно если вы используете события или хотите обновить отношения .....
https://42coders.com/how-to-update-large-data-in-laravel
#Laravel
👉 @php_lib
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🧪 PhpStorm Tips & Tricks
Did you know that PhpStorm has a shortcut to do that? It's called "Move Caret To Matching Brace ", and it also works for HTML tags 🔥
👉 @php_lib
Did you know that PhpStorm has a shortcut to do that? It's called "Move Caret To Matching Brace ", and it also works for HTML tags 🔥
👉 @php_lib
Как запускать долгоживущие скрипты на удаленном сервере
Зачастую приходится на удаленном сервере запускать скрипты вручную. К примеру, для миграции данных из одного хранилища в другое. Как обычно это происходит: заходим на сервак по ssh, запускаем скрипт, он там нам выводит какой-то прогресс (например, обработанные ID), после чего завершается. Однако, часто бывает так, что нужно запустить долгоживущий скрипт. Мне приходилось запускать скрипты, выполняющиеся несколько дней подряд. При этом, нельзя гарантировать что ssh-соединение не разорвётся из-за нестабильного интернета. Далее
👉 @php_lib
Зачастую приходится на удаленном сервере запускать скрипты вручную. К примеру, для миграции данных из одного хранилища в другое. Как обычно это происходит: заходим на сервак по ssh, запускаем скрипт, он там нам выводит какой-то прогресс (например, обработанные ID), после чего завершается. Однако, часто бывает так, что нужно запустить долгоживущий скрипт. Мне приходилось запускать скрипты, выполняющиеся несколько дней подряд. При этом, нельзя гарантировать что ssh-соединение не разорвётся из-за нестабильного интернета. Далее
👉 @php_lib
Telegraph
Как запускать долгоживущие скрипты на удаленном сервере
Зачастую приходится на удаленном сервере запускать скрипты вручную. К примеру, для миграции данных из одного хранилища в другое. Как обычно это происходит: заходим на сервак по ssh, запускаем скрипт, он там нам выводит какой-то прогресс (например, обработанные…
👍9🔥1
Как использовать Psalm на легаси проекте
Если вы задумались о необходимости использования Psalm'а на большом легаси проекте, вам нужно подумать, что делать с текущими ошибками, которых наверняка может быть больше тысячи.
Править их все сразу — это мог быть правильный вариант, если не был бы таким утомительным и долгим.
Глобально подавлять ошибки — это однозначно плохой способ, так как повлияет и на новый код.
Конфиг
Можно воспользоваться конфигом псалма и заигнорировать те директории, где расположен старый код. Однако в таком варианте необходимо, чтобы старый код был однозначно локализован. Такое возможно при наличии некоего подобия модулей, чем может похвастаться далеко не каждый легаси проект.
Этот способ имеет ещё один недостаток: наверняка вы до сих пор что-то правите в этих модулях, и тогда ваш новый код в старых модулях тоже не будет проанализирован псалмом. Но вы же не этого добивались?
psalm-baseline
У псалма есть решение для таких случаев —
У вас в проекте появится
И так до тех пор, пока вы не избавитесь от всех ошибок, либо не удалите модули, заменив их новыми.
👉 @php_lib
Если вы задумались о необходимости использования Psalm'а на большом легаси проекте, вам нужно подумать, что делать с текущими ошибками, которых наверняка может быть больше тысячи.
Править их все сразу — это мог быть правильный вариант, если не был бы таким утомительным и долгим.
Глобально подавлять ошибки — это однозначно плохой способ, так как повлияет и на новый код.
Конфиг
Можно воспользоваться конфигом псалма и заигнорировать те директории, где расположен старый код. Однако в таком варианте необходимо, чтобы старый код был однозначно локализован. Такое возможно при наличии некоего подобия модулей, чем может похвастаться далеко не каждый легаси проект.
<psalm>
....
<projectFiles>
<directory name="src"/>
<ignoreFiles>
<directory name="src/Module1"/>
<directory name="src/Module2"/>
<directory name="src/Module3"/>
</ignoreFiles>
</projectFiles>
....
</psalm>
Этот способ имеет ещё один недостаток: наверняка вы до сих пор что-то правите в этих модулях, и тогда ваш новый код в старых модулях тоже не будет проанализирован псалмом. Но вы же не этого добивались?
psalm-baseline
У псалма есть решение для таких случаев —
baseline
. Данный способ найдёт и сохранит все текущие ошибки в конкретный xml
файл и будет их игнорировать при анализе. Также вам не придётся игнорировать директории и глобально подавлять ошибки. Зато новый код в любых директориях — новых и старых — будет успешно проанализирован псалмом. Чтобы настроить baseline,
вам необходимо выполнить следующую команду в вашем проекте:
./vendor/bin/psalm --set-baseline=psalm-baseline.xml
У вас в проекте появится
psalm-baseline.xml
файл, который необходимо закоммитить. Теперь вы сможете спокойно использовать psalm в CI.
Только не забывайте в свободное время править ошибки в старых модулях. Когда вы поправите часть из них, обновите baseline
: ./vendor/bin/psalm --update-baseline
И так до тех пор, пока вы не избавитесь от всех ошибок, либо не удалите модули, заменив их новыми.
👉 @php_lib
👍4
В Yii Debug добавлена поддержка yiisoft/view версии ^6.0 (PR)
https://github.com/yiisoft/yii-debug
👉 @php_lib
https://github.com/yiisoft/yii-debug
👉 @php_lib
GitHub
GitHub - yiisoft/yii-debug: Yii debug panel extension
Yii debug panel extension. Contribute to yiisoft/yii-debug development by creating an account on GitHub.
👍1