PHP-BE1
310 subscribers
337 photos
11 videos
19 files
620 links
Канал по PHP, полезный и интересный контент для всех уровней.
По вопросам сотрудничества @cyberJohnny
Download Telegram
Недавно мне удалось попользоваться такой замечательной библиотекой как Saloon. О ее существовании я не знал, и решил с вам поделиться опытом - возможно вы тоже не знали??

Вкратце это удобный пакет для написания интеграция с другими сис-ма по http api. Там есть своя структура для описания взаимодействия и различная небольшая экосистема (тестирование, работа с exceptions и другое).

Свой опыт я решил описать на laravel.su для большего охвата аудитории. 😊
Резюмируя - пакет мне понравился конечно, пришлось встретиться с несколькими незначительными нюансами - но пока все идет ровно.


Почитать можно здесь

А если у вас уже есть опыт - напиши в комментариях - может еще не поздно все удалить 😁 и переписать !!
@php_be1
https://laravel.su/p/saloon-universalnyi-instrument-dlia-integracii-po-api
Релиз PHP 8.4.4 и 8.3.17
https://www.php.net/ChangeLog-8.php
@php_be1
Релиз PHP 8.4.4 и 8.3.17

https://www.php.net/ChangeLog-8.php

👉 [|@php_be1]
История создания идеального Docker для Laravel

На первый взгляд, упаковать PHP в контейнер и настроить GitHub Actions кажется простым делом. Но, как часто бывает, реальность оказалась более сложной. Это рассказ о том, как я вернулся к разработке на PHP и решал накопившиеся проблемы с деплоем проекта на Laravel. Я работал над созданием Docker-образа, несколько раз изменял процесс деплоя, искал компромиссы там, где это можно было сделать, и полностью перестраивал архитектуру в тех случаях, когда компромиссы были неприемлемы.

👉 [|@php_be1]
Laravel 12 уже завтра
@php_be1
🚀 Переходите на новый уровень PHP-разработке!

📚 Курс Symfony Framework создан для тех, кто стремится стать востребованным разработчиком уровня middle+ и senior. Мы научим вас решать задачи уровня enterprise на одном из самых мощных PHP-фреймворков — Symfony!

🔧 Почему Symfony? Symfony — это выбор компаний, создающих сложные и надежные приложения. На нашем курсе вы научитесь:
- Использовать Symfony в проектах;
- Обеспечивать безопасность приложения;
- Тестировать и мониторить полученный код;
- Использовать встроенные инструменты фреймворка;
- Разворачивать приложения в различных окружениях.

👩‍🏫 Что вас ждет на курсе? Вы освоите все ключевые функции Symfony под руководством преподавателей-практиков, которые работают на реальных проектах с использованием Symfony, Laravel и других популярных фреймворков.

🚀 Регистрируйтесь прямо сейчас, пройдите короткий тест и получите возможность учиться у экспертов на самых выгодных условиях с промокодом- "Symfony_1_25", а также в рассрочку: 💥👉 https://clck.ru/3GbJhB

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Релиз Filament 3.3
с поддержкой Laravel 12
https://filamentphp.com/
@php_be1
Большое тред на Реддит с недовольством новыми стартовыми наборами в Ларавел
https://www.reddit.com/r/laravel/comments/1iyyxk4/laravel_is_going_in_the_wrong_direction_imho/
@php_be1
Оптимизация SQL-запросов в PHP: избавляемся от тормозов! 🚀

Сегодня я расскажу, как повысить производительность SQL-запросов в PHP и уменьшить нагрузку на базу данных.

1. Используйте подготовленные запросы. Это не только защита от SQL-инъекций, но и возможность кеширования запросов внутри системы управления базами данных.
Пример с PDO:

$stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$stmt->execute(['email' => $email]);
$user = $stmt->fetch();

2. Выбирайте только необходимые данные.

Зачем вам использовать SELECT *, если нужны только id и name? Выбирайте только нужные колонки!

$stmt = $pdo->query("SELECT id, name FROM users");

3. Индексы – ваши друзья.
Проверьте, есть ли индексы на полях, которые часто используются в WHERE и JOIN. Без индексов база данных будет выполнять полный перебор строк!

CREATE INDEX idx_email ON users(email);

4. Избегайте N+1 запроса.
Вместо того чтобы выполнять 100 мелких запросов, сделайте один с JOIN.

Плохо (100 запросов в цикле!):
foreach ($users as $user) {
$stmt = $pdo->prepare("SELECT * FROM orders WHERE user_id = ?");
$stmt->execute([$user['id']]);
$orders[$user['id']] = $stmt->fetchAll();
}

Хорошо (один запрос):
$query = "SELECT users.id, users.name, orders.id as order_id
FROM users
LEFT JOIN orders ON users.id = orders.user_id";
$stmt = $pdo->query($query);
$result = $stmt->fetchAll();

5. Используйте кеширование.
Храните часто запрашиваемые данные в Redis или Memcached, чтобы снизить нагрузку на базу данных.

$cacheKey = "users_list";
$users = $redis->get($cacheKey);

if (!$users) {
$users = $pdo->query("SELECT id, name FROM users")->fetchAll();
$redis->setex($cacheKey, 3600, json_encode($users));
}

Эти советы помогут вам ускорить ваш PHP-код, снизить нагрузку на базу данных и сделать сайт более отзывчивым.

👉 [|@php_be1]
Как справиться с «загадочными» ошибками в PHP? 🤔

Сегодня я хочу обсудить одну из самых неприятных проблем в программировании — «загадочные» ошибки. Это те сбои, которые проявляются только в рабочей среде, исчезают при попытке отладки и вызывают нервное напряжение 😬.

🔍 Почему это происходит?
- Разные среды — на локальной машине у вас PHP 8.2, а на сервере 7.4 (и вдруг функция match ломает весь код).
- Необработанные ошибки — ошибки игнорируются с помощью @, а логи ничего не показывают.
- Состояние кэша — в OpCache или APCu осталась старая версия кода.
- Конкуренция потоков — скрипты выполняются одновременно и мешают друг другу.

🛠 Как с этим бороться?
1⃣ Отключить OpCache на тестовом сервере. Это позволит быстрее проверять изменения и исключить проблемы с кэшем.

2⃣ Настроить логирование. Включите error_reporting(E_ALL) и убедитесь, что display_errors=Off, а log_errors=On с указанием пути к файлу логов.

3⃣ Сравнить среды. Используйте phpinfo() или php -m для проверки версий PHP и установленных модулей.

4⃣ Включить трассировку ошибок. Xdebug поможет отследить стек вызовов, а Laravel Telescope покажет детали запроса.

5⃣ Воспроизвести проблему на копии продакшена. Запустите код в Docker с конфигурацией продакшена или создайте staging-сервер.

6⃣ Подключить мониторинг и оповещения. Инструменты вроде Sentry, Bugsnag или New Relic помогут обнаруживать ошибки раньше, чем их заметят пользователи.

👉 [|@php_be1]
Уязвимость в Laravel
Затронуты все версии. Исправления готовы только для 12-10.
https://github.com/advisories/GHSA-78fx-h6xr-vch4
@php_be1
Список новых стартовых наборов для Laravel
https://github.com/tnylea/laravel-new
@php_be1
Laravel-Zero (https://laravel-zero.com/) - это микро-фреймворк для консольных приложений на базе Laravel Framework, позволяющий легко и быстро разрабатывать функционал работающий без веба. Но инициатором этой статьи стал кейс при использовании Laravel Prompts (https://laravel.com/docs/prompts) с несколькими часами потраченного времени.

Для экономии Вашего времени при столкновении с этой ошибкой или вовсе преждевременным её устранением, добро пожаловать в пост:

https://habr.com/ru/articles/892010/
@php_be1