Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter – Telegram
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
11K subscribers
1.51K photos
25 videos
26 files
4.24K links
Все самое полезное для пхпшника в одном канале.

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

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

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

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
Cloud Castle HTTP Router: Быстрый и гибкий роутер для PHP-приложений

Роутинг — сердце любого веб-приложения. Именно он определяет, насколько быстро и гибко сервер отвечает на запросы. И если вы когда-либо мучились с перегруженными фреймворками, то вам точно стоит взглянуть на Cloud Castle HTTP Router — легковесный, быстрый и современный роутер для PHP 8+.

⚙️ Технические фичи
💨 Скорость: до 12 500 req/s на обычном сервере (Nginx + PHP-FPM).
🧩 Middleware-цепочки: подключайте логирование, CORS и авторизацию без шаблонного кода.
🧠 Кэш маршрутов: компиляция и хранение в памяти для мгновенного матчинга.
🚦 Ошибки под контролем: 404 и 405 с кастомными хендлерами.
🔒 Безопасность: защита от path traversal и method spoofing встроена из коробки.

🏗️ Архитектура
Cloud Castle спроектирован как модульный монолит с графом маршрутов (DAG), что исключает линейный перебор и делает матчинг молниеносным.
Каждый компонент изолирован, тестируем и следует Single Responsibility Principle.
Покрытие тестами — 95%+, а стейтлес-дизайн позволяет масштабироваться горизонтально без боли.

💼 Маркетинговая философия
Cloud Castle — это «роутер для прагматиков».
📦 Весит всего 50 KB
🧩 Совместим с PSR-7 и PSR-15
🧪 Имеет CI-тесты, документацию и примеры
🔓 MIT-лицензия, 100% open source

📎 Репозиторий и тесты — на GitHub.
Попробуйте, запустите make bench и посмотрите сами.

👉 Хабр

Библиотека пхпшника
1
🧠 PHP-лайфхак: Используйте .env-файлы и vlucas/phpdotenv для конфигурации

Если вы хотите разделить конфигурацию от кода и упростить смену окружений (разработка ↔️ тест ↔️ продакшн) — настройка .env и php-dotenv даст вам мощный инструмент. Ниже: как и зачем.

🔍 Что и зачем
Lib php-dotenv загружает переменные из файла .env и делает их доступными через $_ENV, $_SERVER, getenv().

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

⚙️ Как настроить
Установите:

composer require --dev vlucas/phpdotenv
:contentReference[oaicite:5]{index=5}

Создайте файл .env в корне проекта (добавьте в .gitignore), например:

DB_HOST=localhost
DB_NAME=myapp
DB_USER=user
DB_PASS=secret

В точке входа приложения (например, public/index.php или bootstrap.php) добавьте:


require DIR . '/vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
:contentReference[oaicite:6]{index=6}
`

Сейчас переменные доступны, например:

$host = $_ENV['DB_HOST'] ?? 'default_host';

(Опционально) Добавьте обязательные переменные, чтобы приложение падало, если что-то не задано:

$dotenv->required(['DB_HOST','DB_NAME','DB_USER'])->notEmpty();
:contentReference[oaicite:7]{index=7}


🧠 Почему это важно

Считайте: вы переместили всё окружение в легко заменяемый файл. Нет необходимости руками менять конфиги при переезде на другой сервер.
Удобно для командной работы: каждый разработчик копирует .env.example.env, заполняет свои значения.
Повышает безопасность: не храните пароли и ключи прямо в коде.
Делает архитектуру конфигурации более модульной и переносимой.

Библиотека пхпшника
3👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🥱4🥰1
🤖 AI сейчас на пике — и математика снова в центре внимания.

«На конференции AIJ только и разговоров, что о AI и математике. Ведь в основе генеративных моделей Gen AI лежит фундаментальная математика.»

Одна из топовых экспертов, кто сегодня участвует на AIJ, преподаёт у нас.

Мария Тихонова — PhD по Computer Science, руководитель направления в SberAI и доцент ВШЭ. Она работает с LLM каждый день и объясняет математику так, как она реально применяется в AI.

🔥 Экспресс-курс «Математика для DS» — 8 недель, чтобы закрыть пробелы и уверенно проходить собесы.

🎁 До 30 ноября:
→ скидка 40%
→ курс «Школьная математика» в подарок при оплате
→ бесплатный тест на знание основ математики

👉
Записаться на курс
🥱41
💻 Скриншоты текста — зло для разработчиков

Когда видишь скриншот с кодом или ошибкой, хочется плакать — приходится вручную переписывать, тратить время и допускать ошибки. Почему бы просто не вставить текст? Отказ от удобств в угоду ленью — плохой тренд.

💬 Пробовали ли вы объяснять коллегам, почему скриншоты текста — это неудобно? Есть ли похожий опыт? Делитесь болью в комментах 👇

🐸 Библиотека пхпшника
Please open Telegram to view this post
VIEW IN TELEGRAM
3🥱1👾1
💬Итак, когда есть анонимный класс, который дал анонимный объект, можно ли деанонимизировать его и использовать в другом месте кода?

Благодаря class_alias() и $object::class это возможно!

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

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

#vardump
2👍2👾1
🎉 Большая распродажа Proglib Academy — минус 40% на всё!

📚 Выбирай свой курс:

▫️ «Экспресс-курс по математике для DS» — получи фундамент для построения успешной карьеры в Data Science
▫️ «Математика для DS» — для тех, кто хочет уверенно работать с данными;
▫️ «Основы Python» — чтобы начать писать код с нуля;
▫️ «Алгоритмы и структуры данных» — для будущих инженеров;
▫️ «Специалист по ИИ» или «AI-агенты», или «Машинное обучение» — для тех, кто хочет прокачаться в ИИ.
▫️ «Архитектуры и шаблоны проектирования» — чтобы писать гибкий, масштабируемый код как мидл+ разработчик.
▫️ «Основы IT для непрограммистов» — для тех, кто хочет понимать, как устроены технологии, не будучи разработчиком.

🎁 Бонусы ноября:

▫️ Розыгрыш MacBook Pro 14 — купи любой курс и пройди 2 недели обучения до 30 ноября.

▫️ Бесплатный тест по математике — за 5 минут покажет, какие темы стоит подтянуть перед DS.

👉 Выбрать курс со скидкой
📚 Architecting AI Software Systems: Crafting robust and scalable AI systems for modern software development (2025)

Наконец-то кто-то написал гайд о том, как впихнуть AI туда, где он не нужен, но начальству очень хочется. Автор проведет тебя через реальные кейсы, упражнения и даже архитектуру вымышленной AI-системы.

🧠 Ты узнаешь:

✔️ Как сбалансировать классическую архитектуру и AI

✔️ Какие шаблоны, метрики и процессы помогут не утонуть в ML-пайплайнах

✔️ Как проектировать масштабируемые AI-системы, которые не развалятся при первой итерации обучения

✔️ Как минимизировать риски разработки и многое другое

Книга в основном для архитекторов, отвечающих за проектирование и интеграцию возможностей ИИ в существующие и новые системы.

🔗 Скачать

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

20 ноября 2025 года вышел PHP 8.5 — большое обновление ветки, включая официальные сборки для Windows. Это первый серьёзный шаг вперёд после стабилизации версии 8.4 (2024), а расстояние до PHP 8.0 (2020) теперь ощущается особенно сильно: язык продолжает активную эволюцию.

Ниже — краткий обзор ключевых изменений

Оператор pipe (|>)
Наконец-то появился прямой пайплайнинг без промежуточных переменных.
Работает по двум режимам:
функция с одним аргументом → используем ...
функция с несколькими аргументами → используем замыкание
Это серьёзный шаг в сторону функционального стиля.

Расширенное клонирование объектов
Теперь в clone() можно сразу передавать ассоциативный массив со свойствами, которые должны быть изменены в процессе клонирования.

Атрибут #[NoDiscard]
Помечаем функции, результат которых обязан быть использован.
Игнорирование вызова → предупреждение от интерпретатора.
Обход возможен только через приведение к void.

Замыкания в константных выражениях
Разрешены closures и first-class callables в:
атрибутах,
значениях по умолчанию,
константах.
Но с ограничениями:
только static,
без use.

Backtrace при фатальных ошибках
Теперь фаталка даёт обратную трассировку — процесс диагностики становится проще.

Новые функции для массивов
array_first()
array_last()
Простые операции наконец вынесены в стандартную библиотеку.

Новый модуль URI
Упрощённый API для разбора ссылок.
Используются uriparser и lexbor под капотом.

Отложенная валидация атрибутов
Атрибут #[DelayedTargetValidation] переносит проверку (например, #[Override]) с компиляции на runtime.

Получение обработчиков ошибок
Новые функции:
get_error_handler()
get_exception_handler()

Обновления модулей
Curl: curl_share_init_persistent() — совместное использование дескрипторов между запросами.
Exif: поддержка HEIF и HEIC.

🗑 Что объявлено устаревшим
нестандартные типы вроде (integer) → используйте (int)
обратные кавычки для выполнения команд — только shell_exec()
повторные объявления констант
case с ; вместо :
указание null вместо «» в массивах и array_key_exists()
INI-опция disabled_classes полностью удалена

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

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

#свежак
👍176👾1
💡Совет по Laravel: Предварительный просмотр Mailables

При работе с mailables мы часто отправляем их в MailHog или Mailtrap, чтобы быстро просмотреть рендерированное письмо. Знаете ли вы, что Laravel позволяет просматривать письма в браузере, как если бы они были обычными файлами Blade? 🚀

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

#vardump
5
📊 А правда, что математика в Data Science не нужна?

Нет. Без неё вы не пройдёте собес и не поймёте, почему модель ведёт себя странно. Линал, матан и вероятности — это база, без которой работа в ML превращается в угадайку.

🔥 Эту базу можно собрать за 2 месяца на экспресс-курсе «Математика для Data Science».

👩‍🏫 Кто ведёт курс:

Мария Тихонова
PhD, руководитель исследовательского направления в SberAI, доцент ВШЭ.

→ Диана Миронидис
Преподаватель ВШЭ, автор научпоп-материалов по математике для блога МТС.

→ Ксения Кондаурова
Преподаватель преподаватель T-Банка, автор курсов ЦУ и Edutoria.

→ Маргарита Бурова
Академический руководитель программ по аналитике и ML, Wildberries & Russ.

🎁 Что сейчас доступно:

→ бесплатный тест, чтобы узнать свой уровень математики;
→ скидка 40% до 30 ноября;
→ если оплатить до конца ноября, курс «Базовая математика» в подарок.

👉 Пишите менеджеру, если хотите попасть в поток
Типизация данных в PHP, надо ли оно? Прирост скорости JIT

Разбор бенчмарков на PHP 8.4 показал: типизация влияет не только на удобство разработки, но и на скорость выполнения кода — причём заметно.

🚀 Коротко о тесте
MacBook Pro 2018, PHP 8.4.6
10 млн итераций на каждую функцию
5 режимов: без OPcache/JIT, только OPcache, JIT (1205/1235/1255)

📌 Основные выводы

1) Без OPcache и JIT
Типы дают прирост скорости на простых операциях — интерпретатор делает меньше лишних проверок.
2) С OPcache
OPcache кеширует байткод, но не оптимизирует типы, поэтому в некоторых случаях типизированные функции даже медленнее — проверки всё ещё остаются.
3) С JIT
JIT раскрыл эффект максимально:
🔸 типизацию ускоряет в разы;
🔸 нетипизированный код также работает быстрее благодаря спекулятивным оптимизациям;
🔸 tracing-режим (1255) даёт самые стабильные результаты.

🧩 Итог
Типизация в PHP — это не просто подсказки в IDE.
Это реальная оптимизация, которая:
🔹 ускоряет выполнение кода,
🔹 делает его предсказуемее,
🔹 улучшает качество разработки.

Даже без JIT типы дают устойчивый позитивный эффект — а с JIT превращаются в полноценный инструмент производительности.

🔗 Хабр

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

🐸 Библиотека пхпшника
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🤔3
📌 Новый уровень безопасности в PHP 8.2+: скрываем чувствительные данные в логах

При отладке мы привыкли видеть в логах полный стек вызовов. Проблема в том, что туда нередко «утекают» пароли, токены, секретные ключи и другая конфиденциальная информация. Один неосторожный лог — и чувствительные данные оказываются в crash-репорте или системном мониторинге.

PHP 8.2 решает эту проблему точечно — с помощью атрибута #[SensitiveParameter].

🛡 Что это такое

Атрибут, который отмечает конкретный параметр функции как чувствительный.
Если внутри функции произойдёт исключение, PHP маскирует значение этого параметра в stack trace — вместо настоящего значения вы увидите безопасный объект-заглушку.

Это означает:

🔸 никакие пароли и токены больше не окажутся в логах;

🔸 меньше рисков при сборе ошибок в проде;

🔸 выше общий уровень безопасности приложения.

🔍 Как это работает на практике

До PHP 8.2:
Ошибка в методе login() вываливала в логах реальный пароль.

С PHP 8.2+:
Достаточно пометить параметр:
function login(
string $username,
#[SensitiveParameter] string $password
) {
// ...
}


Теперь в стеке будет отображаться безопасная сущность — SensitiveParameterValue, а не содержимое переменной.

🎯 Где особенно полезно

🔹 аутентификация и авторизация

🔹 работа с API-ключами

🔹 операции с криптографическими ключами

🔹 любые места, где есть персональные или конфиденциальные данные

🐸 Библиотека пхпшника
Please open Telegram to view this post
VIEW IN TELEGRAM
👍151
.​gitattributes support — Плагин для PHPStorm

Функциональность и преимущества
📎 Подсветка синтаксиса для файла .gitattributes — делает редактирование этого файла более удобным и визуально понятным.
✏️ Автодополнение / подсказки — как отмечено в блоге JetBrains: «The .gitattributes Support plugin … suggests valid options while you type».
🧭 Универсальность — работает в широком спектре IDE, что удобно для команд с разными средами разработки.

⚠️ Ограничения и моменты, на которые стоит обратить внимание
🛑 Один из отзывов отмечает, что фактическая функциональность может быть ограничена:
«The only actual functionality seems to be code highlighting…»
То есть плагин предлагает преимущественно визуальную помощь, но не глубокую интеграцию с процессами Git.


🔍 Если в проекте файл .gitattributes используется активно (например, для сложных merge/filter-настроек), возможно, этого будет недостаточно — потребуются дополнительные инструменты.
⚙️ Требуется проверить совместимость плагина с вашей версией IDE и политиками команды (особенно если у части команды — старые версии IDE).

📋 Рекомендации по внедрению
Установите плагин, если в вашем проекте используется файл .gitattributes, и необходимо улучшить комфорт редактирования.
🔧 После установки проверьте, как плагин помогает: подсветка, автодополнение, удобство работы. Если всё работает — хорошо.
📌 Если же нужно более глубокое управление атрибутами Git (например, автоматическая нормализация, предупреждения при неправильных настройках) — рассмотрите дополнительно:
интеграцию через pre-commit hooks,
специальные линтеры для .gitattributes,
стандартные скрипты, выполняемые в CI/CD.
👥 В команде: удостоверитесь, что все разработчики осведомлены о плагине, и стандарты работы с .gitattributes описаны в документации.

👉 Ссылка

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

#инструменты
👍1
С корабля на бал

💬
Расскажите, как это было у вас?

#байтовый_юмор
😁17
How to: мигрировать Laravel-блог с PostgreSQL + Elasticsearch на MongoDB Atlas
Хотите упростить инфраструктуру и избавиться от зоопарка из PostgreSQL + Elasticsearch? В статье показан пошаговый пример миграции блога на Laravel c реляционной схемы на MongoDB Atlas, где база и полнотекстовый поиск живут в одном месте.

Краткий план:
1. Клонируете демо-проект: laravel-postgresql-to-mongodb и поднимаете стэк Laravel + PostgreSQL + Elasticsearch через docker compose up -d.
2. Разворачиваете бесплатный кластер в MongoDB Atlas и получаете connection string.
3. Подключаете пакет mongodb/laravel-mongodb, настраиваете новое подключение в config/database.php и переключаете модели на MongoDB-модели.
4. Через MongoDB Relational Migrator переносите данные из PostgreSQL, при этом комменты постов превращаются в embedded-документы.
5. Включаете Atlas Search и переписываете поиск в контроллере на Post::search(...) — без Laravel Scout и без отдельного Elasticsearch.

🔗 Читать статью

Библиотека пхпшника
🔥 На рынке сейчас математика — снова король: AI растёт быстрее, чем вузы успевают обновлять программы. Мы же перестраиваем курс под индустрию мгновенно.

Хочешь наконец разобраться в математике для DS, а не гуглить «что такое градиент» перед собесом?

Новый курс «Математика для разработки AI-моделей» — это 8 недель плотной подготовки, свежая программа и только актуальные темы, которые реально нужны в ML.

Что в курсе:

→ линал, производные, градиенты, вероятности, статистика;
→ практика на Python и 3 большие ДЗ;
→ живые вебинары + разбор ваших вопросов;
→ финальный мини-проект, который можно положить в портфолио;
→ доступ к материалам и чат с экспертами.

Для старта нужны только школьная математика и базовый Python.

🎁 Бонусы ноября:

— скидка 40% до 30 ноября;
— «Базовая математика» в подарок при оплате;
→ бесплатный тест уровня математики.

👉 Записывайся на курс
🥱2
📡 Веб-панель для Amnezia AWG VPN на PHP — удобный контроль доступа без клиентов

Официальные приложения Amnezia удобны для личного использования, но в компаниях быстро упираются в потолок: много серверов, много сотрудников, нужны автоматизация и единая точка управления. Поэтому и появилась веб-панель amneziavpnphp — лёгкий PHP-интерфейс, который берёт управление VPN на себя.

🔧 Что уже есть
🔸 Установка и управление Amnezia AWG на VPS (Ubuntu 22–24) через SSH
🔸 Создание, отзыв и восстановление ключей
🔸 QR-коды для быстрого подключения
🔸 REST API с JWT — удобно автоматизировать и интегрировать в HR/DevOps
🔸 Статистика по каждому клиенту
🔸 Интерфейс на 6 языках
🔸 MIT-лицензия — можно адаптировать под себя

🏢 Зачем это нужно компаниям
Сценарий простой: удалённые сотрудники, нужен доступ к внутренним ресурсам, а раздавать конфиги вручную — боль.

Панель разворачивается за пару минут (Docker), позволяет подключить несколько серверов, выдавать доступы в один клик и отзывать их так же быстро. Через API можно автоматизировать выдачу VPN при онбординге.

👉 Хабр

Библиотека пхпшника
👍4
🧠 Скейффолдинг в Laravel — создавайте всё одной командой

Laravel позволяет с помощью одной команды генерации создать модель, а вместе с ней — опционально: миграцию, фабрику, сидер, контроллер и даже политику. Это сокращает многократный ручной ввод команд и ускоряет старт фичи.

🔧 Как использовать
Пример команды:

php artisan make:model Flight -mfsc

Где:
-m / --migration — создать миграцию.
-f / --factory — создать фабрику.
-s / --seed — создать сидер.
-c / --controller — создать контроллер.
Также есть опция --all / -a, которая создаёт полный набор: модель, миграцию, фабрику, сидер, контроллер, форму-запросы и политику.

💡 Почему это экономит время
Вместо пяти-шести команд — одна.
Нет необходимости помнить и вручную вводить каждый флаг.
Код структуры проекта создаётся сразу с предустановками, минимизируя ручные правки.
Особенно полезно при работе над новой сущностью: быстро поднять модель + таблицу + контроллер + тестовые данные.

⚠️ Что учитывать
Генерация по шаблонам может не полностью соответствовать вашей архитектуре — проверьте результаты и при необходимости отредактируйте.
Если у вас нет опыта с фабриками/сидерами/контроллерами — возможно, часть файлов будет не нужна, и их придётся удалить или переосмыслить.
Следите за тем, чтобы имена и пространства имён (namespace) моделей/контроллеров соответствовали вашим правилам проекта.

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