Библиотека PHP программиста 👨🏼‍💻👩‍💻
2.19K subscribers
315 photos
168 videos
7 files
331 links
Полезные материалы по PHP, Laravel, Symfony, CodeIgniter, CakePHP, Phalcon

По всем вопросам @evgenycarter
Download Telegram
Разбираемся, как работает воркеры очередей в Laravel.

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://habr.com/ru/post/667590/
Сложное объяснение основ устройства индексов в Postgres для тех, кто хочет глубже разобраться в теме.

https://patshaughnessy.net/2014/11/11/discovering-the-computer-science-behind-postgres-indexes
👍2
Обнаружение проблем n+1 через лотерейный подход, то есть запускаем проверку не каждый раз, а с некоторым шансом. Также как сделана в Laravel очистка сессий.

https://timacdonald.me/introducing-lazy-loading-prevention-into-an-existing-laravel-application/

👉 @php_lib
👍1
Ресурсы для API в Laravel

Вы узнаете, что такое Ресурсы и как их использовать для API в Laravel-приложениях.

Ресурсы (Resources) — дополнительный слой поверх Eloquent-моделей. Они позволяют поддерживать единый формат возвращаемых данных. Плюс позволяют отсекать лишние или секретные данные, например, пароли и токены.

#Laravel

👉 @php_lib
👍2
Какой ваш любимый язык программирования и почему это PHP?

#юмор

👉 @php_lib
😁8👍1👏1
Настраиваем Laravel в контейнере Docker

Сегодня я расскажу вам, как сделать своё первое приложение Laravel в контейнере Docker.

#docker #laravel #php

👉 @php_lib
👍3
Готовимся к собеседованию по PHP: Что такое «DI», «Container», «Auto-wiring» за семь простых шагов

Статья написана для начинающих разработчиков на языке PHP, чтобы помочь им усвоить понятия, нужные для понимания того, как устроены и работают современные фреймворки на PHP: Dependency Injection, Container, Auto-wiring.

#PHP #Symfony #Yii #Laravel

👉 @php_lib
👍3
Типизация данных

В отличие от ряда языков программирования в PHP при определении переменных или параметров функций можно не указывать тип данных. Однако в принципе PHP в ряде ситуаций - при определении свойств классов, параметров или возвращаемого значения функций - позволяет указать тип данных. Установка типа данных позволит избежать ситуаций, когда в программу будут переданы данные не тех типов, которые ожидалась разработчиком. Далее

👉 @php_lib
👍3
Статический анализ в PHP

Все мы привыкли к определению, что PHP – это язык со слабой динамической типизацией. В этом одновременно его преимущество и недостаток. Преимущества заключаются в том, что вы имеете больше возможностей по работе с динамическими данными: вызывать функции или объекты из строки, передавать и возвращать mixed типы и многое другое.

👉 @php_lib
👍3
Пробуем KPHP: реально ли его использовать в своих проектах

ВК - крупнейшая социальная сеть в России. Её код изначально был написан на PHP - языке, позволяющим быстро реализовывать функционал веб-сайтов. Однако, PHP является интерпретируемым языком, что само собой не есть хорошо для высоких нагрузок. Далее

#KPHP

👉 @php_lib
👍2
Как обновить большие массивы данных в Laravel

Иногда вам необходимо обновить данные в вашей базе данных. Самая простая возможность - просто запустить обновление в базе данных 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
Как запускать долгоживущие скрипты на удаленном сервере

Зачастую приходится на удаленном сервере запускать скрипты вручную. К примеру, для миграции данных из одного хранилища в другое. Как обычно это происходит: заходим на сервак по ssh, запускаем скрипт, он там нам выводит какой-то прогресс (например, обработанные ID), после чего завершается. Однако, часто бывает так, что нужно запустить долгоживущий скрипт. Мне приходилось запускать скрипты, выполняющиеся несколько дней подряд. При этом, нельзя гарантировать что ssh-соединение не разорвётся из-за нестабильного интернета. Далее

👉 @php_lib
👍9🔥1
Как использовать Psalm на легаси проекте

Если вы задумались о необходимости использования 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