Принцип подстановки Барбары Лисков

Это гостевой выпуск Пятиминутки PHP — ведёт Кирилл Сулимовский. Также порекомендую подписаться на телеграм канал Кирилла: https://t.me/beerphp Принцип подстановки Барбары Лисков ❓Почему у многих возникают проблемы с этим принципом? Если взять не заумное , а более простое объяснение, то оно звучит так: «Наследующий класс должен дополнять, а не замещать поведение базового класса». Звучит логично и …

Подробнее

PHP в 2021 году

На днях в русскоязычном PHP комьюнити прошел онлайн митап, на котором помимо докладов по конкретным темам было обсуждение развития PHP в 2021 году. Перескажу несколько интересных моментов. Первый вопрос: сможем ли мы при использовании constructor property promotion задавать в качестве дефолтных значений новые объекты, например, пишем прямо в сигнатуре конструктора private LoggerInterface $logger = new NullLogger()? Никита Попов (один из ключевых разработчиков PHP) поддерживает эту …

Подробнее

PHP 8: план обновления

Как обновиться на PHP 8.0? https://www.php.net/manual/ru/migration80.php https://stitcher.io/blog/new-in-php-8 https://php.watch/versions/8.0 В первую очередь, ещё до обновления на PHP 8.0, нужно убедиться, что текущая кодовая база не выбрасывает никаких сообщений о deprications на текущей версии языка. Если такие есть, то их нужно поправить. То, что сегодня отображается как уведомление deprecated, завтра, на новой версии языка, может уже выбрасывать Fatal Error! В PhpStorm есть инспекция «Language Level»: запустить её можно через …

Подробнее

Lamoda Outbound

Евгений Сальников — тимлид команды доставки в Lamoda. Путь от разработчика к CTO и обратно в разработку «руками» Apache Camel — почему эта технология так недооценена? 5 языков в одной команде: Java, Kotlin, PHP, Go, TypeScript Большие PHP проекты и сервисная архитектура План по переходу на PHP 8 Поможет ли утилита Rector? Какие статические анализаторы …

Подробнее

Clockwork — отладочная панель для PHP

Clockwork – это библиотека и расширение для браузера предоставляющие удобный интерфейс отладки производительности PHP кода. Расскажу про свой опыт использования и сделаю небольшое сравнение с альтернативами. Как это работает? Сначала устанавливаем библиотеку Clockwork с помощью composer в текущий проект: composer require itsgoingd/clockwork Затем инициализируем где-то в начале жизненного цикла нашего приложения. Есть готовые интеграции для …

Подробнее

Объекты передаются по ссылке или нет?

Пятиминутка PHP · Объекты по ссылке или по значению? Часто можно услышать фразу, что в PHP «объекты всегда передаются по ссылке». На самом деле всё немного сложнее. https://www.php.net/manual/ru/language.oop5.references.php Как выглядит работа с ссылками в PHP? Для этого используется специальный синтаксис – перед именем переменной или параметра функции ставится символ амперсанда (&). В том случае, когда …

Подробнее

declare(strict_types=1)

Пятиминутка PHP · declare(strict_types=1) В прошлом выпуске Пятиминутки PHP я рассказал, как обновлял кодовую базу с помощью утилиты Rector. Одно из направлений – простановка типов. Типы в свойствах классов, типы в параметрах функций, типы возвращаемых значений. Но на этом я не остановился. Следующий шаг – проставить declare(strict_types=1)! Весь новый код, который я пишу по умолчанию …

Подробнее

Rector

Пятиминутка PHP · Rector Rector – это утилита для обновления кодовой базы PHP проекта под современные стандарты. И речь идёт не о PSR-12, а о более интересных преобразованиях, сейчас расскажу! Представьте, что мы хотим добавить больше типизации в код, например, проставить типы возвращаемых из функций значений. Если код написан более-менее прямолинейно и без лишней магии, …

Подробнее

PhpStorm на macOS Metal

Пятиминутка PHP · PhpStorm на macOS Metal Расскажу про тикет JBR-745 о поддержке Metal в JetBrains Runtime, он же проект Lanai или JEP-382. Станут ли IDE от JetBrains отрисовываться со скоростью 300К FPS? Видео, как я запускаю PhpStorm на Metal: https://youtu.be/T0CShIFwyRw Ссылки по теме: https://youtrack.jetbrains.com/issue/JBR-745 https://en.wikipedia.org/wiki/Metal_(API) https://wiki.openjdk.java.net/display/lanai https://openjdk.java.net/jeps/382 https://www.jetbrains.com/help/idea/switching-boot-jdk.html https://www.infoworld.com/article/3408638/macos-targeted-for-new-java-graphics-pipeline.html Источник: 5minphp.ru  

Laravel Livewire — сетевая игра (часть 5)

В этом выпуске обдумаем стратегию аутентификации и поработаем над ссетевой игрой между двумя реальными игроками (раньше играть можно было только против компьютера), добавим режим наблюдателя, потренируемся в отладке с помощью Xdebug и используем функциональность lazy и poll в Livewire. Исходный код проекта: https://github.com/pqr/laravel-livewire-rock-paper-scissors Плейлист со всеми сериями: https://www.youtube.com/playlist?list=PLvP6XNj3GUhB4idkTp1KPBki3-070Ymcq Источник: 5minphp.ru  

Laravel Livewire — SPA & Turbolinks (часть 4)

Продолжаем работу над игрой «Камень, ножницы, бумага». В этом эпизоде добавим игровое лобби, таким образом приложение будет состоять из двух экранов: лобби и непосредсвенно игра. Обработку роутов приложения сделаем с помощью Livewire, такм образом переходы между экранами будут осуществляться в без перезагрузки страницы в стиле Signle Page Application. Также научимся сохранять состояние игры в базу …

Подробнее

Laravel Schematics — проектируем базу данных (часть 3)

Продолжаем работу над игрой «Камень, ножницы, бумага». В этом эпизоде займёмся проектированием структуры базы данных и мделаем это с помощью утилиты Laravel Schematics. Исходный код проекта: https://github.com/pqr/laravel-livewire-rock-paper-scissors Плейлист со всеми сериями: https://www.youtube.com/playlist?list=PLvP6XNj3GUhB4idkTp1KPBki3-070Ymcq Источник: 5minphp.ru  

Laravel Livewire — Исправляем уязвимости (часть 2)

Продолжаем работу над игрой «Камень, ножницы, бумага» с использованием Laravel Livewire. В этом эпизоде исправим дыру в безопасности и обсудим, на что стоит обращать внимание при работе с Livewire, чтобы не отдать лишние данные на клиент? Исходный код проекта: https://github.com/pqr/laravel-livewire-rock-paper-scissors Плейлист со всеми сериями: https://www.youtube.com/playlist?list=PLvP6XNj3GUhB4idkTp1KPBki3-070Ymcq Источник: 5minphp.ru  

Laravel Livewire — Камень, ножницы, бумага (часть 1)

Напишем игру «Камень, ножницы, бумага» с помощью Laravel Livewire. Livewire позволяет создавать динамические веб-интерфейсы без программирования на JavaScript. Весь код будем писать исключительно на PHP, при этом приложение будет работать без перезагрузки страницы и общаться с сервером с помощью Ajax. Исходный код проекта: https://github.com/pqr/laravel-livewire-rock-paper-scissors Плейлист со всеми сериями: https://www.youtube.com/playlist?list=PLvP6XNj3GUhB4idkTp1KPBki3-070Ymcq Источник: 5minphp.ru