Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
10.9K subscribers
1.6K photos
27 videos
26 files
4.35K links
Все самое полезное для пхпшника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/bca892d6

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
🎄 Новый год прошёл — возвращаемся в рабочий режим

Декабрь был рваным: дедлайны, релизы «перед праздниками», хотфиксы между салатами и попытки не сломать прод на последнем деплое года. Теперь это уже история — самое время спокойно разобрать, что реально произошло и что делать дальше.

Предлагаем в этой ветке дополнительно обсудить:
🎯 что из запланированного на декабрь так и не взлетело — и почему
📉 какие технические долги утащили с собой в январь
📈 какие решения неожиданно сработали лучше ожиданий
🧪 что хотите переписать, выкинуть или зафиксить в первом квартале
🚀 планы на 2026: стек, архитектура, апгрейды, эксперименты

Новый год — удобная точка не для «мотивационных обещаний», а для холодного инженерного пересмотра: что масштабируется, что тормозит команду, а что пора честно признать ошибкой.

👇 Пишите, с чем вы вошли в январь — и куда собираетесь двигаться дальше.

Библиотека пхпшника
💻 Подборка новостей по PHP за неделю:​

🔹 Laravel: официальная AI-документация — в документации Laravel 12.x появился раздел AI Assisted Development с рекомендациями по эффективному использованию AI-инструментов при разработке Laravel-приложений.

🔹 Filament v4.5 — вышло обновление админ-панели с улучшениями из версий 4.4 и 4.5: доработки UX, новые возможности компонентов и дальнейшая шлифовка стабильности.

🔹 Claude Code Simplifier для Laravel — Тейлор Отвелл выпустил плагин для Claude Code, который автоматизирует упрощение и чистку Laravel/PHP-кода прямо в рабочем процессе.

🔹 Laravel 12.45.1–12.46.0 — добавлены новые хелперы для массивов и коллекций, улучшена авторизация Gate с поддержкой enum, а также включены важные багфиксы.

🔹 Symfony 5–11 января — фокус на исправлении багов и обновлении тестов под новые версии PHPUnit. В Symfony 8.1 начали появляться новые фичи, а Symfony UX представил новый Toolkit-пакет.

Библиотека пхпшника

#свежак
👍1
Автозаполнение вводимых команд в Laravel

При создании опций для CLI-приложений вы можете улучшить UX, реализовав автозаполнение для пользователя. Это можно сделать с помощью метода anticipate, предоставляемого Laravel 🚀

Библиотека пхпшника

#vardump
👍9
echo $old_price; // deprecated

Завтра стоимость всех курсов Proglib.academy вырастет. Залетайте в обучение сегодня, чтобы успеть до планового обновления прайса.

Залить качественную обнову в скиллы
Проект начинался как обычное PHP-приложение, а закончился полностью автоматизированным CI/CD-пайплайном для PHP-микросервисов.
По дороге — YAML-ад, конфликты портов, падения пайплайнов и неожиданные различия macOS vs Linux.

🧱 Что строилось
PHP 8.2 (FPM) — backend-сервисы
Nginx — reverse proxy / API Gateway
MySQL + Redis — данные
Docker Compose — оркестрация
GitHub Actions — CI/CD
Prometheus + Grafana — мониторинг
Жёстко зафиксированные порты: 9000 / 9001 / 8081 / 3000 / 9090

💥 Что сломалось первым
Docker Compose: services must be a mapping → YAML не прощает отступы
Конфликты портов → без документации сервисы воюют
GitHub Actions: .env.example есть локально, но не в Git
CRLF vs LF → пайплайн падает из-за line endings

🔧 Что в итоге сработало
Переменные окружения + дефолты по портам
Healthchecks на уровне Docker и CI
Fallback-логика для .env в CI
Отдельный скрипт проверки живости сервисов
Мониторинг не «потом», а сразу

🧠 Ключевые выводы
Infrastructure as Code ≠ магия — тестируется и ревьюится как код
CI/CD — это быстрый фидбек, а не просто «зелёная галочка»
Порты — ограниченный ресурс, их нужно резервировать заранее
12-Factor App работает и для DevOps, не только для приложений
Наблюдаемость важнее героизма при падении продакшена

🚀 Прод
Zero-downtime deploy
Масштабирование сервисов
Бэкапы перед обновлением
Автоматическая проверка состояния

Это не история про «идеальный стек».
Это история про боль → дисциплину → устойчивую систему.

💬 А как вы решаете конфликты портов?

👉 Ссылка на статью

Библиотека пхпшника
🧠 Монолит или Web API? Проверим на практике

Представьте ситуацию 👇
Вы начинаете новый PHP-проект с нуля.
Есть бизнес-идея, сроки поджимают, команда не бесконечная.

Вопрос не теоретический — архитектурный.

👉 Какой подход вы выберете и почему?

🅰️ Монолит
Быстрее старт
Проще деплой
Меньше инфраструктурного шума

🅱️ Web API + клиент
Чёткие контракты
Готовность к мобильным приложениям
Проще масштабировать команды

🅾️ Модульный монолит (гибрид)
Один репозиторий
Внутренние API/DTO
Возможность без боли выделить API позже

🅿️ Зависит от контекста
Размер команды
Тип продукта
Планируемый рост

Условия (чтобы было честно):
PHP (Laravel / Symfony — не важно)
1–2 месяца на MVP
Возможен рост продукта, но не гарантирован
Продакшн, а не pet-project

💬 Напишите в комментариях:
1️⃣ Что выберете первым шагом
2️⃣ При каком триггере поменяете архитектуру
3️⃣ Какой самый болезненный опыт у вас был: с монолитом или с API

#элементарный_выбор

Библиотека пхпшника
Loupe

Полнотекстовая поисковая система с токенизацией, стеммингом, устойчивостью к опечаткам, фильтрами и географической поддержкой, основанная на чистом PHP и SQLite.

🔗 Github

Библиотека пхпшника

#инструменты
🧹 How-to: навести порядок в PHP-проекте с PHP CS Fixer

PHP CS Fixer — инструмент, который автоматически приводит код к единому стилю.
Он убирает хаос с отступами, кавычками, импортами и форматированием — и делает код читаемым и предсказуемым для всей команды.

Зачем нужен единый стиль
👀 Читаемость — код воспринимается быстрее, без лишней когнитивной нагрузки
🤝 Code review без споров — больше никаких обсуждений табов и скобок
🧱 Поддерживаемость — код выглядит так, будто у него один автор
🚀 Быстрый онбординг — новички не привыкают к «местным традициям»
🐛 Меньше ошибок — отклонения от нормы сразу бросаются в глаза

Почему именно PHP CS Fixer
единые правила для всей команды
автоматическое исправление стиля
экономия времени на ревью
профессиональный, индустриальный вид кода

Как начать
1. Добавьте PHP CS Fixer как dev-зависимость
2. Создайте конфигурацию в корне проекта
3. Используйте безопасные правила без изменения поведения кода
4. Исключите служебные и vendor-директории

Лучший старт — стандарт PSR-12 с минимальными дополнениями.

Как встроить в работу
Подход 1: форматирование отдельным коммитом
Сначала логика — потом единый коммит со стилем. История остаётся чистой.
Подход 2: контроль через CI/CD
Пайплайн проверяет стиль и подсказывает разработчику, что нужно поправить до merge.

👉 Medium

Библиотека пхпшника
⌨️ Топ-вакансий по PHP за неделю

PHP-разработчик — от 180 000 до 250 000 ₽, Удалёнка (Москва)

Middle FullStack Developer (PHP / Laravel / Vue) — от 150 000 ₽, Удаленка (Москва)

Middle / Senior PHP Developer — Договорная, Удалёнка/Офис (Кипр)

➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs
MoonShine 4: AI-инструменты, Tailwind 4 и новый UI — большой разбор релиза open source админ панели

Tailwind 4, дизайн-токены, AI-генерация через Claude Code, Telegram Mini App, модульная архитектура CRUD, 20+ палитр из коробки и генератор собственных. MoonShine 4 большое обновление админ панели для проектов на Laravel и других фреймворках. Вместо часов настройки полей — один промпт. Вместо танцев с CSS — система дизайн-токенов. Вместо мобильного приложения — интеграция с Telegram. За 11 месяцев разработки было переосмыслено то, как должна создаваться админ-панель в 2025 году. Внутри — полный технический разбор.

🔗 Хабр

Библиотека пхпшника
8👍1
🧠 Продвинутый кеш для запросов и HTTP-ответов

1) Кеширование данных/результатов запросов в Laravel
Laravel предоставляет единый API для работы с кешем — Redis, Memcached, DynamoDB, файл-драйвер и другие хранилища доступны «из коробки».
Это позволяет кешировать результаты тяжёлых запросов или вычислений, чтобы не выполнять их повторно при каждом HTTP-запросе.
Пример:


use Illuminate\Support\Facades\Cache;

$products = Cache::remember('products.active', 3600, function () {
return Product::where('active', true)->get();
});


🔹 remember() проверяет наличие ключа в кеше → если нет — выполняет запрос, сохраняет результат → использует кеш до истечения TTL (в секундах).

2) Полное кеширование HTTP-ответов (Response Cache)
Для страниц или API-эндпоинтов, результат которых редко меняется, можно кешировать весь HTTP-ответ. Это значит: тот же запрос не будет обрабатываться Laravel/Symfony — ответ будет браться из кеша.

🤝 Laravel
Существуют готовые пакеты (например, spatie/laravel-responsecache), которые автоматически кешируют весь ответ для GET-запросов:

composer require spatie/laravel-responsecache

Пакет будет сохранять ответы и отдавать кешированные данные без обработки контроллера.
📍 Это даёт максимальное ускорение на страницах/эндпоинтах, которые не зависят от частых изменений — например, список товаров, главные страницы, публичные API.

3) HTTP-кеширование через заголовки
Можно использовать HTTP-кеширование на уровне клиента и прокси: браузеры или CDN будут хранить ответы и не обращаться к серверу.
Пример установки заголовков в Laravel:


return response()->json($product)
->header('Cache-Control', 'public, max-age=3600')
->setEtag(md5($product->updated_at));


🔹 Cache-Control указывает, как долго браузер/CDN может хранить ответ.
🔹 ETag позволяет клиенту проверить, изменился ли ресурс, без загрузки полного тела ответа.

📈 Такой подход особенно эффективен для API с часто повторяющимися запросами — уменьшает количество запросов к серверу и снижает нагрузку на процессор и базу.

4) HTTP-кеширование в Symfony
Symfony поддерживает стандартизированное HTTP-кеширование (RFC 7234): можно настраивать TTL, validation-кеш, работу через обратные прокси.
Пример для компонента Symfony:


$response = new Response($content);
$response->setSharedMaxAge(3600); // кеш прокси
return $response;


🔹 Symfony может работать с reverse proxy (gateway cache), например с Varnish или встроенным HttpCache, что позволяет обходить приложение полностью при совпадении кеша.

📦 Такой кеш особенно полезен для статичных страниц, публичных API или фрагментов, которые долго остаются неизменными.

5) Низкоуровневые кеш-стратегии
Помимо кеширования данных и ответов, можно:
🔹 кешировать вычисления, агрегации и подготовленные отчёты;
🔹 кешировать результаты внешних API-вызовов, чтобы не дергать их при каждом запросе;
🔹 кешировать конфигурацию/маршруты, чтобы уменьшить накладные расходы на bootstrap.

🧠 Когда это эффективно
Высокая нагрузка на API/сервер
Часто повторяющиеся запросы к одним и тем же данным
Страницы, результаты поиска, публичные каталоги
Обслуживание данных, которые редко меняются

⚠️ Что важно учитывать
⚠️ Если данные меняются часто — кеш нужно инвалидировать своевременно
⚠️ Неразумное кеширование может привести к устаревшим ответам
⚠️ Не все маршруты подходят для полного HTTP-кеша — динамические, приватные, зависящие от сессии должны быть исключены

Библиотека пхпшника
1
🐘 PHP для начинающих: зачем нужен php artisan и как им пользоваться

php artisan — это CLI-интерфейс Laravel, который ускоряет разработку:
он генерирует код, управляет БД, помогает с отладкой и обслуживанием проекта.
Если вы работаете с Laravel и не используете artisan — вы тратите время впустую.

1️⃣ Контроллеры
🔹 Обычный контроллер

php artisan make:controller UserController

Что делает: создаёт пустой контроллер
Когда использовать: нужен полный контроль над методами

🔹 Resource-контроллер (CRUD)

php artisan make:controller UserController --resource

Создаёт методы:
index, create, store, show, edit, update, destroy
Идеально для: MVC-приложений

Работает в паре с:

Route::resource('users', UserController::class);

🔹 API Resource-контроллер

php artisan make:controller UserController --api

Без create() и edit()
Для: REST API (JSON, Sanctum, JWT)

🔹 Invokable-контроллер

php artisan make:controller LoginController --invokable

Один метод __invoke()
Для: одного действия, чистые роуты

2️⃣ Представления (Blade)
🔹 View

php artisan make:view about

Создаёт resources/views/about.blade.php

🔹 Blade-компонент

php artisan make:component About

Для: переиспользуемых UI-элементов
Пример:

<x-about />

3️⃣ Модели и база данных
🔹 Модель

php artisan make:model Course

Часто используемые флаги:

-m — migration

-f — factory

-s — seeder

-a — всё сразу

🔹 Информация о модели (Laravel 10+)

php artisan model:show Course

Показывает таблицу, поля, связи, casts
Очень полезно для отладки

4️⃣ Миграции

php artisan make:migration create_posts_table
php artisan migrate
php artisan migrate:rollback --step=3
php artisan migrate:reset ⚠️ удаляет все таблицы
php artisan migrate:refresh

Запуск конкретной миграции:

php artisan migrate --path=/database/migrations/xxxx.php

5️⃣ Seeders (данные)

php artisan make:seeder TeachersSeeder
php artisan db:seed --class=TeachersSeeder

Для: тестовых и стартовых данных

6️⃣ Валидация и middleware

php artisan make:rule Uppercase
php artisan make:middleware CheckRole

Используется для:
валидации, авторизации, фильтрации запросов

7️⃣ Аутентификация и API

php artisan install:api

Устанавливает Laravel Sanctum и API-авторизацию

php artisan make:provider AuthServiceProvider

Gates и Policies

8️⃣ Почта

php artisan make:mail WelcomeMail

Emails и уведомления

9️⃣ Настройка и обслуживание

php artisan key:generate обязательно после clone
php artisan storage:link доступ к storage
php artisan down
php artisan down --secret=token
php artisan up

🔟 Роутинг и отладка

php artisan route:list
php artisan route:list --except-vendor

Для: поиска конфликтов и middleware

1️⃣1️⃣ Локализация и stubs

php artisan lang:publish
php artisan stub:publish

Stubs — шаблоны для make: команд
Можно кастомизировать стиль проекта

1️⃣2️⃣ Кэш и оптимизация

php artisan optimize
php artisan optimize:clear
php artisan config:cache
php artisan route:cache
php artisan view:clear

Для продакшена и странных багов

1️⃣3️⃣ Очереди и задачи

php artisan make:job SendEmailJob
php artisan queue:work

1️⃣4️⃣ Policies

php artisan make:policy CoursePolicy --model=Course

1️⃣5️⃣ Tinker (обязательно знать)

php artisan tinker

Интерактивный REPL
Можно выполнять Laravel-код, запросы, сервисы прямо в консоли

Библиотека пхпшника

#php_азбука
👍4🥱31
Совет по Laravel: Порционное удаление данных

💬Если удаляете много записей из таблицы, делайте это частями и с паузами, чтобы не завалить базу данных.

Библиотека пхпшника


#vardump
👍7🤔1
Какое значение по умолчанию принимает директива memory_limit в PHP?

Правильный ответ лежит в канале задач
🌚1
📚 Grokking Relational Database Design (2025)

Эта книга — как дружелюбное и наглядное введение в проектирование реляционной базы без боли, внутри которого тебя ждет:

🔹 SQL без лишней воды. Как создавать таблицы, писать запросы и не сломать всё одной командой.

🔹 Проектирование базы с нуля. Что хранить, где хранить, как правильно назвать таблицы и поля.

🔹 Нормализация без страшных терминов. Минимум дублей, минимум аномалий, максимум структуры.

🔹 Практика на реальном проекте. Будешь проектировать и оптимизировать базу под e-commerce — от схемы до запросов.

🔹 Генеративный ИИ в помощь. Как делегировать рутину: описания сущностей, черновики схем, проверки связей.

🔹 Производительность и безопасность. Почему индексы — не украшение схемы, а обязательная часть. И как не создать дыру в доступах одним неверным GRANT’ом.

Эта книга не грузит теорией ради теории. Она объясняет, как базы работают на практике, и помогает собрать ту самую «правильную» структуру, которая выдержит рост приложения.

🔗 Скачать

🔹
Курс «Основы IT для непрограммистов»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸 Книги для программистов | Поддержать бустом
Please open Telegram to view this post
VIEW IN TELEGRAM
1