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

Когда я только начинал, я постоянно забывал про php artisan tinker (если речь про Laravel) или встроенный интерактивный шелл php -a. А ведь это супер-удобный способ быстро проверить кусок кода, протестировать работу функции или глянуть, что вернет тот или иной запрос.

Например, нужно быстро понять, как работает кастомный accessor в модели? Вместо того чтобы городить временные роуты или var_dump-ить в контроллере - открываешь tinker:

php artisan tinker
И сразу работаешь с моделью:

$user = App\Models\User::find(1);
$user->profile->full_name;

Буквально за пару секунд получаешь ответ, без лишнего мусора в коде.

Еще круто использовать tinker для тестирования сервисов или вызова хелперов. Иногда я даже проверяю SQL-запросы через Eloquent, чтобы потом использовать их в сидерах или тестах.

Короче, мой совет: если еще не используете — приучите себя чаще заходить в tinker. Это ваш "быстрый песочница", которая всегда под рукой.

А вы как чаще отлаживаете код в Laravel - через tinker, dd() или дебаггер в IDE? Напишите в комментах, будет интересно сравнить!

👉 [|@php_be1]
🔥 Проверьте свои знания PHP! 🚀

Думаете, ваши знания PHP на уровне Middle+ или Senior? Пройдите наш квиз и узнайте, готовы ли вы освоить один из самых мощных PHP-фреймворков — Symfony!

Этот курс позволит вам развить навыки для разработки сложных и высокопроизводительных приложений. Вы научитесь обеспечивать безопасность приложений, проводить оптимизацию и эффективно использовать современные инструменты фреймворка, такие как Symfony, Git, Docker и многие другие.

На курсе вас ждут:
- Живые лекции с практикующими преподавателями
- Глубокое погружение в архитектуру Symfony

После курса вы сможете решать задачи уровня enterprise и работать с самыми популярными фреймворками.

👉 Пройдите тест, получите доступ к полезным урокам и скидку на курс «Symfony Framework»:
https://clck.ru/3NrJDn

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Релизы PHP 8.4 и 8.3.25
https://www.php.net/ChangeLog-8.php

@php_be1
Gemini API PHP Client

Клиент Google Gemini API для PHP позволяет вам использовать модель искусственного интеллекта Gemini.

Установка

composer require gemini-api-php/client

Базовая генерация текста

use GeminiAPI\Client;
use GeminiAPI\Resources\Parts\TextPart;

$client = new Client('GEMINI_API_KEY');
$response = $client->geminiPro()->generateContent(
new TextPart('PHP in less than 100 chars'),
);

print $response->text();
// PHP: A server-side scripting language used to create dynamic web applications.
// Easy to learn, widely used, and open-source.

https://github.com/gemini-api-php/client

👉 [|@php_be1]
Каким мог бы быть Laravel WebServer, если бы он работал через очередь?

Привет! Сегодня я хочу поделиться с вами одной интересной идеей — а что если Laravel WebServer принимал бы все HTTP-запросы не напрямую, а через обычную очередь задач Laravel Queue? Вместо привычных PHP-FPM, Swoole, RoadRunner или FrankenPHP — весь запрос обрабатывался бы как задача в очереди.

Звучит странно? Давайте разбираться, как это могло бы работать и что из этого получилось бы.

https://laravel.su/p/kakim-mog-by-byt-laravel-webserver-esli-by-on-rabotal-cerez-ocered

👉 [|@php_be1]
Pulse Boson PHP #1
Boson PHP — это платформа для создания кроссплатформенных настольных приложений, которая позволяет использовать веб-технологии (PHP, JavaScript, HTML, CSS) для создания native-приложений. Она сочетает в себе интерпретатор PHP и движок WebView, что позволяет собирать приложения в единый исполняемый файл для Windows, Linux и macOS.
https://habr.com/ru/articles/944716/

@php_be1
💡 Совет по 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/