PHP-BE1
302 subscribers
399 photos
12 videos
19 files
691 links
Канал по PHP, полезный и интересный контент для всех уровней.
По вопросам сотрудничества @cyberJohnny
Download Telegram
💡 Совет по Laravel

Нужно проверить, что в вашем вводе существуют определённые ключи массива?

Используйте required_array_keys, чтобы убедиться, что в данных массива присутствуют конкретные ключи - идеально подходит для API-эндпоинтов, которые ожидают строгую структуру данных.

Ссылка на документацию: https://laravel.com/docs/12.x/validation#rule-required-array-keys

👉 [|@php_be1]
Сегодня хочу поговорить про одну проблему, с которой я сталкивался сам и вижу её у других PHP-разработчиков - “магия” в коде.

Что я имею в виду? Это когда ты открываешь проект, а там сервисы создаются «сами собой», данные в объект попадают неизвестно откуда, а половина зависимостей подтягивается где-то «под капотом».
Вроде удобно - меньше кода писать. Но вот через пару месяцев ты сам же сидишь и думаешь: «А откуда вообще берётся этот объект? И почему тут такая зависимость?»

🔹 Основная проблема магии - она убивает явность кода. Чем больше скрытых механизмов, тем сложнее поддерживать проект и подключать новых разработчиков.

Примеры из практики:

- Использование глобальных хелперов вместо DI.
- Автоматический вызов методов через __call или __get.
- Массовая магия в Laravel (facades, hidden bindings и т.д.).

🛠 Что можно сделать:

1. Минимизировать скрытые механизмы - лучше написать чуть больше явного кода.
2. Использовать контейнер зависимостей, но регистрировать их явно.
3. Документировать «точки входа» и договориться в команде, где магия допустима, а где нет.

Когда код становится предсказуемым, ты меньше тратишь времени на дебаг, быстрее понимаешь чужие изменения и увереннее двигаешься вперёд.

А как у вас в проектах? Вы за явный код или любите, когда всё работает «само»?

👉 [|@php_be1]
🚀 Подборка ВК сообществ для программистов

📌Программирование

Программирование ITmozg https://vk.com/itmozg

Программирование Bookflow https://vk.com/bookflow

Обычный программист https://vk.com/oproger

Frontend разработчик https://vk.com/frontend_dev

Библиотека PHP программиста https://vk.com/php_be1

React https://vk.com/react_lib

Библиотека Java разработчика https://vk.com/bookjava

Библиотека C/C++ разработчика https://vk.com/cpp_lib

Kotlin https://vk.com/kotlin_lib

Библиотека Go (Golang) разработчика https://vk.com/golang_lib

📌Системное администрирование

Системный администратор https://vk.com/i_odmin

DevOps https://vk.com/i_devops

Библиотека девопса | DevOps, SRE, Sysadmin https://vk.com/devopslibru

Системный Администратор (Сисадмин) https://vk.com/sysodminof

Типичный Сисадмин https://vk.com/tipsysdmin

Книги для Системного Администратора https://vk.com/i_odmin_book

Системный Администратор Windows https://vk.com/windows_srv

Bash Советы https://vk.com/bash_srv

Devops Star (Звезда Девопса) https://vk.com/devops_star

Linux https://vk.com/linuxchmod

📌Python

Python академия https://vk.com/python_of

Библиотека Python разработчика https://vk.com/bookpython

📌1C

1C программист https://vk.com/odin1c_rus

DevLab1C https://vk.com/devlab1c

📌Сообщество Дизайнеров https://vk.com/odesigners

📌Физика Математика

ФизМат https://vk.com/phismat_1

Я Математик https://vk.com/po_matematike

📌Базы данных

Базы данных (Data Base) https://vk.com/database_info

📌Хакер

Хакер Free Взлом https://vk.com/xakkep_1

📌Юмор программистов

ITumor | программисты шутят https://vk.com/itumor

📌GitHub

GitHub Сообщество https://vk.com/githublib

📌Тестирование (QA)

Библиотека тестировщика QA https://vk.com/testlab_qa

📌GameDev

GameDev: разработка игр https://vk.com/game_devv

📌Работа для программистов, IT специалистов

https://vk.com/progjob
Часто используемые способы взаимодействия с релейшенами Laravel и их улучшение

1) Первый
Product::query()
- ->with([
- 'attribute' => fn (Builder $query) => $query->select(['id', 'title'])
- ])
- ->whereHas('attribute');
+ ->withWhereHas('attribute:id,title')

2) Второй
Product::query()
- ->whereHas('attribute', fn (Builder $query) => $query
- ->where('id', $id)
- );
+ ->whereRelation('attribute', 'id', $id)

3) Третий
Product::query()
- ->with([
- 'attribute' => fn (Builder $query) => $query->select(['id', 'title'])
- ])
- ->whereHas('attribute', fn (Builder $query) => $query
- ->where('id', $id)
- );
+ ->with('attribute:id,title')
+ ->whereRelation('attribute', 'id', $id)

@php_be1
💡Совет по Laravel

Определение языка пользователя

Laravel использует компонент HttpFoundation из Symfony, который предоставляет полезные возможности. Если вы работаете с локализацией и нужно определить предпочитаемый язык пользователя, просто вызовите метод getPreferredLanguage 🚀

👉 [|@php_be1]
Использование файберов в PHP

PHP и асинхронность. Такая комбинация долгие годы казалась невозможной, ведь PHP прочно ассоциировался с блокирующим подходом и синхронным выполнением скриптов «от запроса до ответа». С выходом PHP 8.1 ситуация несколько изменилась — появилась возможность реализовать асинхронность в PHP на основе файберов. Но есть нюанс — вопрос о том, действительно ли PHP с приходом файберов стал асинхронным, по-прежнему для многих остается открытым.

@php_be1

https://habr.com/ru/companies/docdoc/articles/941364/
Podlodka Crew 29 сентября запускает новую конференцию — Podlodka AI Crew (https://podlodka.io/aicrew?utm_campaign=early_bird_ai_crew_1&utm_source=telegram&utm_medium=paid&utm_content=laravel_it&erid=2SDnjcnF3ka)🥳

Если вы ищете практические знания без воды — это оно. Подлодка собрала экспертов, которые покажут, что реально работает в коде, пайплайнах и командных процессах.

В программе:

📊«AI, ML, DS, нейросети: без хайпа в терминах» — разберём границы применимости подходов, чтобы отличать пользу от шума (Алексей Шаграев, ex-Google, ex-Yandex).

👥 Круглый стол «AI-культура в команде» — инструменты и практики, сопротивление/принятие, влияние на эффективность и безопасность (Макс Сальников / Microsoft, Владимир Иванов / Supplied, Михаил Левченко / Яндекс Вертикали, Павел Герасимов / Wrike).

💻 Мастер-класс «Project-aware ассистенты: RAG + MCP» — живая документация, контекст кода для LLM и интерфейс запросов в мессенджере; как это ускоряет онбординг и разработку (Григорий Сухоруков, Яндекс).

⚡️«Эффективный промптинг» — техники, которые убирают типовые страхи и реально ускоряют разработку (Евгений Сатуров, Surf).

Почему это важно: AI уже часть рабочего стека — от IDE до CI/CD. Здесь — практики с измеримым эффектом: меньше рутины, быстрее процессы.

Кому будет полезно: разработчикам, архитекторам и техлидам, платформенным/DevOps-инженерам - всем, кто внедряет AI-процессы и ждёт измеримого результата.

🗓 29 сентября - 3 октября
🔗 Подробности и регистрация: https://podlodka.io/aicrew (https://podlodka.io/aicrew?utm_campaign=early_bird_ai_crew_1&utm_source=telegram&utm_medium=paid&utm_content=laravel_it&erid=2SDnjcnF3ka)

@php_be1
Денди-код

Краткая и практичная книга о том, как писать понятный и аккуратный код с примерами на PHP. Книга не уходит в теоретические дебри, не спорит о вкусе и не переоценивает значение философии чистоты. Она фокусируется на самом первом шаге к хорошему коду — его визуальной читаемости. Здесь вы найдёте рекомендации, которые можно и нужно применять сразу на практике.

Бесплатно: https://github.com/tabuna/dandy-code

@php_be1
Релизы PHP 8.4.13 и 8.3.26
https://www.php.net/ChangeLog-8.php

@php_be1
Вы когда-нибудь импортировали несколько классов из одного пространства имён вот так?

Это изящный ход или грязная ошибка? Делись мнением в комментариях!

#Laravel

👉 [|@php_be1]
Совет по Laravel💡

Знаете ли вы .... tap() = Tweak and Return 🪄

Да, в Laravel метод tap() позволяет изменить объект и вернуть его обратно — идеально для чистого и читаемого кода.

👉 [|@php_be1]
Тестировщики не у дел, штат сокращается, а пробиться через сотню откликов нереально – что делать?

Леся Набока и Карьерный Цех (https://careerfactory.ru/career-support?utm_source=telegram&utm_medium=laravel_it&utm_campaign=native_support_07102025&erid=2W5zFGAmXTN) уже много лет держат руку на пульсе и помогают тестироващикам сохранять свои позиции на рынке. За КЦшниками выстраивается очередь, а все потому, что они умеют в самопрезентацию и точно знают, что главный продукт в их жизни — это собственная карьера.

Кроме этого, их выпускники:
— жестко качают нетворк и обзаводятся нужными подвязами;
— умеют в переговоры (знают, что это не они продают себя, а компания предлагает им свою вакансию)
— получают пожизненный навык трудоустройства (а значит никакой шторм на рынке им больше не страшен).

Их выпускники повсюду, они работают во всех топовых компаниях нашей страны.

Хотите перестать паниковать перед сотнями откликов? Приходите на бесплатную консультацию (https://careerfactory.ru/career-support?utm_source=telegram&utm_medium=laravel_it&utm_campaign=native_support_07102025&erid=2W5zFGAmXTN) и узнавайте подробнее о программе.

@php_be1
В документацию добавлена страница с обновлениями
https://laravel.com/docs/changelog

@php_be1
Совет по Laravel💡

Если вы хотите автоматически удалять старые записи, используйте трейт Prunable.
Нет необходимости писать собственные команды.

👉 [|@php_be1]
Сегодня хочу поговорить о теме, которая часто мешает PHP-разработчикам писать красивый и устойчивый код - магические методы.

Да, те самые __get, __set, __call, __toString и компания. Они вроде бы удобные: можно ловко обращаться к несуществующим свойствам, вызывать методы, которых нет, и всё работает. Но вот вопрос — а как это тестировать и поддерживать?

Когда код полагается на магию, отладка превращается в игру «угадай, откуда взялось это значение». IDE не подсказывает типы, автодополнение не работает, а дебаггер видит лишь хаос. Я не говорю, что магические методы нужно запретить. Они бывают полезны, например, в паттерне Proxy или для ленивой загрузки. Но использовать их стоит осознанно, с понятным контрактом.

👉 Советы от меня:

- Если хочешь гибкости — лучше внедри __call через интерфейс или трейт с чёткой логикой.
- Если используешь __get / __set — документируй все «виртуальные» свойства в phpdoc.
- И главное - не прячь логику под магию. Пусть код говорит сам за себя.

👉 [|@php_be1]