en
Feedback

Don't get caught by a cheater! Telemetrio finds and tags such channels 👉 If you want to see the tag, subscribe

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

Open in Telegram

Все самое полезное для пхпшника в одном канале. По рекламе: @tproger_sales_bot Учиться у нас: clc.to/M561SQ Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b

Show more

📈 Analytical overview of Telegram channel Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

Channel Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter (@phpproglib) in the Russian language segment is an active participant. Currently, the community unites 10 462 subscribers, ranking 11 707 in the Technologies & Applications category and 60 816 in the Russia region.

📊 Audience metrics and dynamics

Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 10 462 subscribers.

According to the latest data from 27 October, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -37 over the last 30 days and by -2 over the last 24 hours, overall reach remains high.

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 16.71%. Within the first 24 hours after publication, content typically collects 7.56% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 1 748 views. Within the first day, a publication typically gains 791 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 1.
  • Thematic interests: Content is focused on key topics such as php, laravel, пхпшника, artisan, api.

📝 Description and content policy

The author describes the resource as a platform for expressing subjective opinions:
“Все самое полезное для пхпшника в одном канале. По рекламе: @tproger_sales_bot Учиться у нас: clc.to/M561SQ Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b”

Thanks to the high frequency of updates (latest data received on 28 October, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.

10 462
Subscribers
-224 hours
-257 days
-3730 days
Posts Archive
🧪 Тестирование Symfony-конфигов Библиотека matthiasnoback/symfony-config-test предоставляет PHPUnit-трейт с готовыми ассертами для проверки дерева конфигурации. Она позволяет убедиться, что конфиги ведут себя корректно при невалидных данных, мёрже и дефолтах:
class ConfigurationTest extends TestCase
{
    use ConfigurationTestCaseTrait;

    protected function getConfiguration(): Configuration
    {
        return new Configuration();
    }

    public function test_invalid(): void
    {
        $this->assertConfigurationIsInvalid(
            [[]], // пустой массив
            'required_value'
        );
    }

    public function test_processed(): void
    {
        $this->assertProcessedConfigurationEquals(
            [['key' => 'first'], ['key' => 'last']],
            ['key' => 'last']
        );
    }
}
Через параметр breadcrumbPath можно тестировать отдельную ветку дерева (например, doctrine.orm), игнорируя остальные required-ноды. Версия 6.x поддерживает PHPUnit 10–12. Репозиторий на GitHub Библиотека пхпшника #release_radar

🔬 Лексер, парсер, интерпретатор — собираем свой DSL на чистом PHP Doctrine DQL, Twig-выражения, Symfony ExpressionLanguage — всё это мини-языки внутри PHP-проектов. Под капотом у каждого одинаковый конвейер: исходный текст → токены → AST → результат. Тот же конвейер ложится в 3 класса и ~150 строк, если задача — rule engine для бизнес-логики:
// Lexer: режет строку на токены через preg_match
// Parser: рекурсивный спуск → AST с приоритетами
// Interpreter: обход дерева + контекст

$rule = 'user.age >= 18 and (user.has_vip or user.orders_count > 5)';

$tokens = (new Lexer($rule))->getTokens();
$ast    = (new Parser($tokens))->parse();
$result = (new Interpreter($context))->evaluate($ast);
// true | false — без eval, без магии
Парсер строит BinaryOpNode / UnaryOpNode, интерпретатор резолвит переменные через explode('.', $name) и match по операторам. Никакого eval — дерево объектов и рекурсия. Расширяется под промокоды, скоринг, ACL и любые гибкие системы, где правила хранятся в БД как строки. 🔗 Читать оригинал — полный код всех трёх классов с тестами. Библиотека пхпшника #php_core

🗓 Когда date() достаточно, а когда нет Большинство статей про форматирование дат сводятся к таблице токенов. Но реальный вопрос не «какой символ за что отвечает», а когда использовать date(), а когда DateTimeImmutable. 🔹 date() для быстрых задач
echo date('Y-m-d H:i:s');
echo date('Y-m-d', 1710938096);
Скрипты, логи, простой вывод — здесь date() вполне уместна. Она форматирует Unix timestamp, опираясь на системную timezone. 🔹 DateTimeImmutable для всего остального
$date = new DateTimeImmutable('2026-03-20 14:30:45', new DateTimeZone('Europe/Paris'));
echo $date->format('Y-m-d H:i:s T');
// 2026-03-20 14:30:45 CET

echo $date->setTimezone(new DateTimeZone('America/New_York'))->format('Y-m-d H:i:s T');
// 2026-03-20 09:30:45 EDT
Timezone живёт внутри объекта, а не берётся из глобального контекста. Это критично, когда в проекте есть очереди, API, мультирегиональность или локаль пользователя. 🔹 date_format() просто обёртка
date_format($date, 'Y-m-d'); // то же самое, что $date->format('Y-m-d')
Процедурный стиль для тех, кто не может расстаться с PHP 5-мышлением 🔹 Готовые форматы на каждый день
// Хранение в БД / логи
$date->format('Y-m-d H:i:s');

// ISO 8601 / API
$date->format('c'); // или DATE_ATOM

// Человекочитаемый
$date->format('d F Y'); // 20 March 2026

// 12-часовой формат
$date->format('g:i A'); // 2:30 PM
🔹 Экранирование в строке формата Буквы a, t, m и другие — зарезервированные токены. Если нужен литерал, экранируй бэкслешем:
echo date('Y-m-d \a\t H:i', 1710938096);
// 2024-03-20 at 12:34

🔥 4 привычки кодеров Вот сколько общаюсь с разработчиками, постоянно слышу убеждение, что есть какой-то правильный способ пи
🔥 4 привычки кодеров Вот сколько общаюсь с разработчиками, постоянно слышу убеждение, что есть какой-то правильный способ писать софт. Все ищут секретную архитектуру, вылизывают паттерны, чтобы хоба и тимлид заплакал от счастья от твоего идеального кода. но, я собрал 4 привычки адептов «чистого кода», (которые обычно все практикуют) 🤡 • Бесконечный рефакторинг рабочего кода. Кажется, что так ты делаешь продукт лучше. Итог: жестко падаешь в перфекционизм. Переписываешь функцию по три раза, а бизнес ждет релиз. Закрываешь вкладку и в голове абсолютная пустота, время потрачено, а новых фичей ноль. • Упарывание в сложную архитектуру Сеньоры на ютубе обещают золотые горы, если внедрить микросервисы куда угодно. Итог: получаешь красивый overengineering-проект для мамы и 0 запущенных продуктов в срок, пока конкуренты клепают MVP на коленке. • Душные споры на ревью Неплохо, но как итог: ты пишешь полотна текста и тратишь часы на поиск глупой придирки к стилю, потому что банально фокус сместился с реальной задачи на эго. • Ручная микро-оптимизация Классика для тех, кто любит алгоритмы из универа. Итог: убиваешь дни жизни и выжимаешь миллисекунды, хотя бизнесу нужен был просто грязный, но рабочий скрипт еще вчера. Проблема в том, что ни один из этих путей не дает самого главного - скорости и проверки гипотез. Реальному рынку плевать на твой идеальный код за 3 дня. Бизнес предпочтет код от ИИ-агента за 5 минут, который уже завтра начнет приносить деньги. Хочешь обкатанный на нас лично и 100х учениках метод, как перестать кодить руками и начать делегировать задачи автономным системам? 👉 Заходи сюда, но у нас осталось всего 4 места, набор идет до завтрашнего дня. P. S. Если интересно еще что-нибудь почитать от меня, то заходите в «Азбуку Айтишника», там я рассказываю об айти-базе, также у меня там есть бесплатный гайд на 15 глав по ии-агентам

⌨️ Топ-вакансий по PHP за неделю PHP-разработчик — от 150 000 ₽ — удалёнка Middle Backend Developer — от 170 000 до 230 000 р — удалёнка PHP Backend — 150 000 – 400 000 ₽ — удалёнка ➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs

🗓️ Уже через пару часов стартует вебинар! Тема:
Как эффективно управлять контекстным окном LLM в мультиагентных системах и не сливать бюджет на токены
Ждем вас сегодня в 19:00 по московскому времени. Не пропустите начало, будет много практики! 👉 Успей занять место

👀 Хуки свойств в PHP В PHP 8.4 появилась долгожданная возможность — хуки свойств. Это встроенная логика чтения и записи значения прямо в объявлении свойства. Без отдельных методов, без шаблонных getSomething() и setSomething(). Код становится компактнее, выразительнее и проще для сопровождения. 🔹 В чём была проблема До этого было всего два варианта: — классический подход с приватными полями и методами доступа; — promoted-properties из конструктора — удобно, но без логики. У обоих подходов есть ряд минусов: — негде аккуратно разместить валидацию; — сложно добавить логирование изменений; — неудобно реализовать ленивые вычисления; — класс быстро разрастался вспомогательными методами. 🔹 Что изменилось с хуками Теперь PHP позволяет перехватывать: → момент чтения свойства; → момент записи значения. При этом снаружи используется привычный доступ к свойству, внутри — чётко определённое место для логики и в одном классе можно сочетать обычные свойства и свойства с хуками. 🔹 Виртуальные свойства PHP 8.4 позволяет создавать свойства без собственного хранилища. Такие свойства: → не занимают память; → вычисляются при каждом обращении; → выступают как интерфейс к другим данным объекта. Полезно для: объединённых представлений данных, вычисляемых значений, и упрощения публичного API модели. ⚠️ Важные ограничения — хуки несовместимы с readonly-свойствами; — изменение по ссылке может обойти логику записи; — не все внутренние функции PHP вызывают хуки одинаково. 🤖 Осталось 4 места на курс по ИИ-агентам. Набор закрывается 30 апреля. 🔗 Успеть на обучение 🔗 Хабр Библиотека пхпшника

🪤 Локальный дебаг-сервер без Docker Ловить дампы через symfony/var-dumper можно, но ограниченно. SMTP, Sentry, Monolog, HTTP-дампы, Ray, бинарные данные — всё это мимо. buggregator/trap собирает всё в одну консоль. Ставится:
composer require --dev buggregator/trap -W. 
Запускается:
vendor/bin/trap. 
Никакого Docker (написан целиком на PHP). Функция trap() заменяет dump() и шлёт данные на локальный сервер:
trap($veryDeepArray)->depth(3);

trap($item)->times(3); // не больше 3 дампов

trap($response)->return(); // дампнуть и вернуть значение
Автоматически распознаёт тип трафика на одном порту, так что не нужно открывать отдельные пакеты для var-dumper, SMTP и Sentry. Есть шорткаты: tr() для дампа с возвратом, td() для дампа с die. Плагин для PhpStorm тоже в наличии. 🔗 Репозиторий на GitHub 🐸 Библиотека пхпшника

🔧 array_key_first() / array_key_last() Помните, как все делали reset() или array_keys($arr)[0], чтобы получить первый ключ? Начиная с PHP 7.3 есть нативный способ:
php// ❌ старый способ
$key = array_keys($data)[0];

// ✅ чистый нативный
$key = array_key_first($data);
$last = array_key_last($data);

// работает с ассоциативными тоже
$map = ['foo' => 1, 'bar' => 2];
array_key_first($map); // 'foo'
Не мутирует массив (в отличие от reset()), не создаёт лишний массив ключей — просто возвращает ключ или null если массив пустой. 🔥 Пока разбираетесь с массивами — параллельно можно освоить ИИ-агентов. 4 места до 30 апреля. 🐸 Библиотека пхпшника #vardump

💬 Обратная связь Коллеги, давайте соберём базу годных ресурсов по PHP помимо нашего канала. ✔️ Присылайте в комменты: — Блоги и статьи — Telegram-каналы — YouTube-каналы и подкасты — Репозитории — Доклады ❌ Что НЕ ищем Курсы "php с нуля за месяц", базовые туториалы и переводы официальной документации. 💬 Закидывайте в комменты ваши любимые источники. Для работы, для учёбы, для повседневного чтения.

🔥 База по ИИ-агентам от научного сотрудника Сколтеха и НИУ ВШЭ Знакомьтесь, Екатерина Трофимова. Кандидат компьютерных наук,
🔥 База по ИИ-агентам от научного сотрудника Сколтеха и НИУ ВШЭ Знакомьтесь, Екатерина Трофимова. Кандидат компьютерных наук, ресерчер в Центре ИИ Сколтеха и лаборатории LAMBDA. Она объединяет глубокую академическую экспертизу и практику: знает, как ИИ-системы устроены «под капотом» и как встроить их в реальные сервисы (в т.ч. для Сбера). Мы попросили Екатерину собрать список мастхев материалов для тех, кто хочет проектировать агентов в проде. Сохраняйте список. 🛠 Стек и фреймворки: DSPy — алгоритмическая оптимизация промптов (вместо ручного подбора слов). Semantic Kernel и LangMem — инструменты для управления сессионной и долгосрочной памятью. MCP (Model Context Protocol) — новый стандарт от Anthropic для подключения агентов к вашим БД и локальным файлам. 📖 Документация, которую нужно знать: Anthropic Prompt Caching — как кэшировать контекст и радикально резать косты на API. OpenAI Agents SDK / Cookbook — лучшие практики работы с памятью. Augment — платформа для оптимизации работы ИИ-агентов и контроля токенов. 🔬 Хардкорные статьи и препринты (на выходные): Lost in the Middle — почему LLM «слепнут» на длинных текстах и забывают середину контекста. How Do Coding Agents Spend Your Money? — куда улетает бюджет при работе автономных кодинг-агентов. MemGPT — архитектура операционной системы для LLM с иллюзией бесконечной памяти. InjecAgent / AgentSentry — всё о безопасности и защите агентов от инъекций в промпты. Екатерина Трофимова — один из ключевых экспертов нашего курса AgentOps. На своих лекциях она детально разбирает, как проектировать инструменты для агентов, как агент принимает решения о вызове инструментов и какие ограничения возникают в реальном проде 🎁 Акция в честь старта продаж! Прямо сейчас при покупке Инженерного трека вы получаете полный доступ к материалам курса «Разработка ИИ-агентов» в подарок. 👉 Забрать 2 курса по цене 1 и начать обучение

#байтовый_юмор
#байтовый_юмор

⚡️ Laravel: withCount() вместо with() для агрегатов with('orders') подгружает всю коллекцию моделей в память. Если нужна только цифра — это избыточно. ❌ Антипаттерн
$users = User::with('orders')->get();
// Eloquent грузит все связанные модели в память
// затем PHP считает count() на уже загруженной коллекции

foreach ($users as $user) {
    echo $user->orders->count();
}
✅ Правильно
$users = User::withCount('orders')->get();
// Генерирует подзапрос: SELECT count(*) as orders_count
// Один SQL-запрос, ноль лишних объектов в памяти

foreach ($users as $user) {
    echo $user->orders_count;
}
Доступные хелперы одного семейства:
User::withSum('orders', 'total')    // orders_sum_total
User::withAvg('reviews', 'rating')  // reviews_avg_rating
User::withMin('orders', 'total')    // orders_min_total
User::withMax('orders', 'total')    // orders_max_total
Каждый из них транслируется в коррелированный подзапрос. А цепочка из нескольких всё равно будет одни основным SELECT'ом. Применимо когда: — рендеришь список с агрегированными метриками; — строишь API без лишних аллокаций; — профилируешь и видишь with() там, где нужна только цифра.

⚡️ Laravel: withCount() вместо with() для агрегатов --- with('orders') подгружает всю коллекцию моделей в память. Если нужна только цифра — это избыточно. ❌ Антипаттерн:
$users = User::with('orders')->get();
// Eloquent грузит все связанные модели в память
// затем PHP считает count() на уже загруженной коллекции

foreach ($users as $user) {
    echo $user->orders->count();
}
✅ Правильно:
$users = User::withCount('orders')->get();
// Генерирует подзапрос: SELECT count(*) as orders_count
// Один SQL-запрос, ноль лишних объектов в памяти

foreach ($users as $user) {
    echo $user->orders_count;
}
Доступные хелперы одного семейства:
User::withSum('orders', 'total')    // orders_sum_total
User::withAvg('reviews', 'rating')  // reviews_avg_rating
User::withMin('orders', 'total')    // orders_min_total
User::withMax('orders', 'total')    // orders_max_total
Каждый из них транслируется в коррелированный подзапрос. Цепочка из нескольких — всё равно один основной SELECT. --- Применимо когда: — рендеришь список с агрегированными метриками — строишь API без лишних аллокаций — профилируешь и видишь with() там, где нужна только цифра --- #laravel #php #eloquent #performance #backend

Команда git cherry-pick A..B выбирает коммиты:
Anonymous voting

🔄Вы используете шаблоны, запросы и конфигурации каждый день. Но понимаете ли вы, как они устроены внутри? 📅На открытом урок
🔄Вы используете шаблоны, запросы и конфигурации каждый день. Но понимаете ли вы, как они устроены внутри? 📅На открытом уроке за 60 минут разберём, как работает любой язык — и соберём свой DSL на PHP. Покажем полный конвейер: от исходного текста до результата. Вы увидите, как писать лексер, строить синтаксическое дерево и реализовывать интерпретатор. Всё — на чистом PHP, без магии и скрытых механизмов. Это даёт не просто новый навык, а понимание, как работают инструменты, которыми вы уже пользуетесь: шаблонизаторы, запросы, правила. И как создавать собственные решения под задачи бизнеса — без хардкода и сложных обходных путей. 💡Открытый урок проходит в преддверии старта курса «PHP-разработчик. Продвинутый уровень» 29 апреля в 20:00 МСК. Регистрация: https://clc.to/sU25lg Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

⌨️ Топ-вакансий по PHP за неделю Fullstack разработчик PHP — от 180 000 до 230 000 ₽ — удалёнка Backend-разработчик — от 1 800 до 3 100 $ — удалёнка Team Lead PHP — до 402 000 ₽ — удалёнка ➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs

#байтовый_юмор
#байтовый_юмор