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

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

Открыть в Telegram

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

Больше

📈 Аналитический обзор Telegram-канала Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

Канал Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter (@phpproglib) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 10 695 подписчиков, занимая 11 615 место в категории Технологии и приложения и 61 312 место в регионе Россия.

📊 Показатели аудитории и динамика

С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 10 695 подписчиков.

Согласно последним данным от 10 июня, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -40, а за последние 24 часа — -1, при этом общий охват остаётся высоким.

  • Статус верификации: Не верифицирован
  • Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 15.62%. В первые 24 часа после публикации контент обычно набирает 8.78% реакций от общего числа подписчиков.
  • Охват публикаций: В среднем каждый пост получает 1 671 просмотров. В течение первых суток публикация набирает 939 просмотров.
  • Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 11.
  • Тематические интересы: Контент сосредоточен на ключевых темах, таких как php, laravel, пхпшника, artisan, api.

📝 Описание и контентная политика

Автор описывает ресурс как площадку для выражения субъективного мнения:
Все самое полезное для пхпшника в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/bca892d6 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b

Благодаря высокой частоте обновлений (последние данные получены 11 июня, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.

10 695
Подписчики
-124 часа
-187 дней
-4030 день
Архив постов
🤤 Икра черная, икра красная, а профессия — программирование Сертификат на обучение от Proglib Academy — это крутой подарок д
🤤 Икра черная, икра красная, а профессия — программирование Сертификат на обучение от Proglib Academy — это крутой подарок для тех, кто интересуется IT, хочет освоить новую профессию и жить в шоколаде. Почему наши курсы — хороший презент: 🔵Подходит для новичков и профессионалов: можно выбрать обучение под любой уровень знаний. 🔵Помогает развивать востребованные навыки, которые пригодятся в IT. 🔵Позволяет выбрать удобный формат обучения: можно учиться в своем темпе, когда удобно. Сертификат оформляется за пару минут, и даже не нужно ломать голову над упаковкой. 🚀 Подарите возможность начать год с полезных знаний и карьерного роста → подробнее о сертификатах

Облако — это конструктор! The Art of Programming — подкаст об ​​инструментах, технике и разработке ПО. По следам конференции
Облако — это конструктор! The Art of Programming — подкаст об ​​инструментах, технике и разработке ПО. По следам конференции HighLoad 2024 записали новый выпуск, в котором обсуждаем индустрию публичных облаков. Вместе с Данилой Дюгуровым, CTO MTC Web Services, говорим о новостях индустрии, создании новых облачных платформ, потенциале рынка и принципах формирования топовых команд разработки. 🎧Слушайте The Art of Programming на всех популярных подкаст-площадках.

Обновление Symfony 2.8 до версии 7.2 по проторенной дорожке Обновление проектов на Symfony можно проводить двумя способами. Первый подразумевает использование только UPGRADE.md файлов при каждом релизе, заменяя устаревшие функции новыми. Такой подход позволяет поддерживать проект в актуальном состоянии, но его возможности ограничены. Второй подход более комплексный: он не только учитывает изменения, но и использует все современные функции фреймворка. Это делает код быстрее, проще в понимании и готовым к следующим обновлениям. Второй способ предпочтителен, так как повышает удобство работы с проектом и его дальнейшую поддержку. Основные этапы обновления Symfony 1. Учет версий PHP и Symfony Перед обновлением важно проверить совместимость версий Symfony и PHP. Например, Symfony 5.4 — последняя версия, поддерживающая PHP 7.4. Если проект работает на этой версии PHP, необходимо сначала обновить Symfony до 5.4, а затем перейти на PHP 8.0, чтобы продолжить обновление до Symfony 6. 2. Обновления в Symfony 3 🔸Новая структура каталогов. Вместо папок /app и /Resources все файлы теперь располагаются в корне проекта. 🔸Инъекция зависимостей через конструктор. Переход от использования глобального контейнера ($this->get('service')) к внедрению зависимостей в конструкторе. Этот шаг значительно упрощает архитектуру. 🔸Автозагрузка и автоконфигурация сервисов. С помощью _defaults: autowire: true можно сократить настройки в services.yml. 🔸Разделение монорепозитория. Вместо зависимости symfony/symfony рекомендуется добавлять в проект только те пакеты Symfony, которые действительно используются. 3. Нововведения Symfony 4 🟢PSR-4 автозагрузка сервисов. Можно автоматически регистрировать все классы из определенной директории, вместо ручной регистрации каждого сервиса. 🟢Переход с YAML на PHP для конфигураций. PHP-конфиги более удобны для работы с инструментами статического анализа и проверки на устаревшие методы. 4. Symfony 5 и новые атрибуты От аннотаций к атрибутам. С версии 5.2 поддерживаются PHP-атрибуты, такие как #[Route] и #[Required], что упрощает написание и понимание кода. Новая система аутентификации. Вместо Guard используется более современный механизм, представленный в Symfony 5.3. 5. Symfony 6 и 7 На версиях Symfony 6 и 7 акцент сделан на улучшение синтаксиса и использование новых возможностей PHP 8. Например: #[TaggedIterator] позволяет автоматически внедрять набор сервисов. #[Autowire] упрощает передачу переменных окружения в сервисы.

💭 Представьте, что за час вы можете научиться чему угодно. Что вы выберете?👇

#дайджест #PHPdevjob Вакансии PHP разработчиков уровня Junior ▪️ Junior Backend разработчик РНР (Laravel) Удалёнка, Делаем IT Подробнее ▪️ PHP-разработчик Junior / Middle Офис (Санкт-Петербург), Off Group Подробнее Вакансии PHP разработчиков уровня Middle ▪️ PHP-разработчик Офис (Екатеринбург), Goulash.Tech Подробнее ▪️ Middle Backend Developer (PHP) Удалёнка / Офис (Москва), Rusprofile Подробнее Вакансии PHP разработчиков уровня Senior ▪️ Senior PHP разработчик Офис (Томск), Совкомбанк Технологии Подробнее ▪️ PHP-разработчик (Laravel) Удалёнка, Рососмотр Подробнее Понравились вакансии? ❤️ — да 🤔 — нет

Использование технологии withoutWrapping для сглаживания ответов API Ресурсы API Laravel по умолчанию оборачивают ответы в кл
Использование технологии withoutWrapping для сглаживания ответов API Ресурсы API Laravel по умолчанию оборачивают ответы в ключ 'data'. Хоть это и полезно для многих сценариев, иногда требуется более плоская структура ответа, и тогда вы можете отключить обертывание ресурсов.

«Я создал одно и то же приложение на всех версиях PHP (1995-2025)» Здесь автор создает приложение на PHP 2 и постепенно улучшает его, параллельно рассказывая о нововведениях каждой вышедшей версии языка. Интересное видео на вечер

Написание высококачественных тестов В статье обсуждается важность написания качественных тестов и подчеркивается, что их часто недооценивают. Автор отмечает, что разработчики нередко просто проверяют наличие тестов, вместо того чтобы уделять внимание их качеству. Это может приводить к проблемам: тесты оказываются ненадежными, сложными для понимания или слишком долгими в выполнении. Минимализм в тестах Рекомендуется писать тесты минимального размера, содержащие только необходимый код. Это упрощает их понимание в будущем. Тест должен быть максимально лаконичным, но при этом полностью завершённым. Стремление к 100% покрытию кода Автор критикует подход, при котором допускается, например, 90% покрытие, так как это создает иллюзию надежности. Вместо этого предлагается избегать ненужного кода (например, геттеров и сеттеров, которые не используются) и исключать из анализа строки, которые невозможно покрыть тестами. Написание качественных проверок (assertions) Тесты пишутся для проверки поведения кода, и правильная формулировка проверок имеет решающее значение. Подчеркивается важность понятных сообщений об ошибках, которые помогают быстро разобраться в проблеме. Он критикует использование слишком общих проверок, которые затрудняют диагностику, и рекомендует выбирать подходящие инструменты, такие как специализированные проверки в PHPUnit. Снапшот-тестирование Автор также обсуждает методику снапшот-тестирования, которая часто используется в фронтенд-разработке. Она фиксирует текущее состояние компонентов и позволяет быстро выявить изменения. Однако метод имеет недостатки, такие как хрупкость тестов и неочевидность их намерений. Рекомендации Для улучшения тестирования автор советует: 🔸Упрощать код тестов, оставляя только необходимое. 🔸Стремиться к 100% покрытию кода, исключая из анализа непокрываемые участки. 🔸Использовать правильные проверки, которые дают понятные сообщения об ошибках.

PHP 8.4 представил значительное обновление DOM-расширения, добавив возможность работы с элементами DOM через новый API CSS-селекторов. Эта функция, схожая с JavaScript-методами querySelector() и querySelectorAll(), упрощает выбор и обработку элементов в HTML и XML-документах. Что нового в PHP 8.4? Ранее разработчики использовали такие методы, как getElementsByTagName() или getElementById(), которые требовали ручной обработки и были менее удобны. Новый API CSS-селекторов позволяет выбрать элементы DOM с использованием знакомого синтаксиса, делая код более компактным и понятным. Основные методы: querySelector(): выбирает первый элемент, соответствующий заданному CSS-селектору.
$doc = new DOMDocument();
$doc->loadHTML('<div class="header">Header Content</div>');
$element = $doc->querySelector('.header');
echo $element->textContent; // Вывод: "Header Content"
querySelectorAll(): возвращает коллекцию всех элементов, подходящих под CSS-селектор.
$doc = new DOMDocument();
$doc->loadHTML('<div class="item">Item 1</div><div class="item">Item 2</div>');
$elements = $doc->querySelectorAll('.item');
foreach ($elements as $element) {
    echo $element->textContent . "\n";
}
// Вывод:
// Item 1
// Item 2
Преимущества Простота синтаксиса: Использование CSS-селекторов упрощает код, избавляя от необходимости создавать сложные циклы для обхода DOM. Гибкость: Можно применять сложные селекторы, включая атрибуты, псевдоклассы и вложенные структуры. Сходство с JavaScript: Разработчики, знакомые с JavaScript, быстро адаптируются к новым методам PHP. Ограничения Доступно только в PHP 8.4 и более поздних версиях. querySelectorAll() возвращает статический список узлов, который не обновляется при изменении DOM. Поддержка сложных псевдоклассов, таких как :nth-child(), может быть ограничена.

[Git] Зачем команда git bundle? Команда git bundle используется для упаковки репозитория или его части в один файл. Этот файл можно передать, скопировать или сохранить, а затем использовать для восстановления или обновления репозитория в другом месте. Основное назначение этой команды — перенос изменений без необходимости наличия сетевого подключения, например, в случаях, когда доступ к удалённому репозиторию ограничен. Основные случаи использования git bundle: 1. Передача репозитория офлайн: Если репозиторий большой, но доступ к сети отсутствует, можно создать файл с полным содержимым репозитория и передать его через USB-накопитель или другое физическое устройство. 2.Обновление репозитория офлайн: Если нужно синхронизировать изменения между двумя репозиториями без доступа к сети, можно упаковать изменения в bundle и передать его. 3. Создание резервной копии: git bundle может использоваться для создания архива репозитория с сохранением всей истории. 4. Доставка изменений: Это удобный способ передать патчи или ветки, которые можно позже интегрировать в другой репозиторий. Примеры использования: Создание полного архива репозитория: git bundle create my-repo.bundle --all Здесь флаг --all указывает, что нужно упаковать все ветки и историю. Упаковка определённой ветки: git bundle create my-feature.bundle main Это создаст архив с содержимым только ветки main. Проверка содержимого bundle: git bundle verify my-repo.bundle Проверяет, что файл корректен и пригоден для использования. Клонирование из bundle: git clone my-repo.bundle my-new-repo

ResultTransformer в Symfony проектах Symfony со стандартным набором возможностей представляет собой мощное и универсальное решение, способное справляться с широким спектром бизнес-задач. Существует подход, который известен далеко не каждому разработчику на Symfony, а если и известен, то чаще всего поверхностно и редко применяется на практике. Настало время подробнее рассмотреть эту менее известную, но интересную сторону фреймворка. Один из таких подходов связан с использованием функциональности Doctrine, позволяющей возвращать готовые DTO, что избавляет разработчика от ручной работы по преобразованию данных. Этот процесс, известный как ResultTransformer, автоматизирует преобразование данных в DTO, значительно упрощая задачу программиста. Однако, стоит учитывать, что этот метод имеет ряд ограничений. Он может оказаться избыточным и подходит далеко не для всех случаев. Применение подхода целесообразно лишь в определённых сценариях, где его преимущества действительно оправданы.

Вакансии «Библиотеки программиста» — ждем вас в команде! Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем: 👉контент-менеджеров для ведения телеграм-каналов Подробности тут Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴 Ждем ваших откликов 👾

Знаете ли вы, что в Laravel есть трейт Prunable, позволяющий удалять записи, в том числе и мягко удаленные, на основе заданно
Знаете ли вы, что в Laravel есть трейт Prunable, позволяющий удалять записи, в том числе и мягко удаленные, на основе заданного вами условия? 🚀

Оптимизированная ленивая загрузка в Symfony Doctrine для повышения производительности Во время работы над проектом Symfony возникла проблема с производительностью из-за неожиданного поведения Doctrine. В одной из сущностей была настроена связь OneToOne с параметром fetch="LAZY», чтобы загружать связанные данные только при необходимости. Однако Doctrine загружал связанные сущности заранее, что приводило к избыточной нагрузке. Проблема Пример: сущность Store имела связь OneToOne с сущностью StoreDetail, содержащей метаданные о магазине. Даже при включённой ленивой загрузке Doctrine автоматически добавлял JOIN, что влияло на производительность: Усложнённые запросы: ненужные операции JOIN увеличивали нагрузку на базу данных. Избыточное использование памяти: данные загружались в память даже при их ненужности. Замедление работы API: запросы, возвращающие списки магазинов, замедлялись из-за лишних данных. Решение 1. Перепроектирование связи Связь была преобразована из OneToOne в ManyToOne. Теперь StoreDetail ссылался на Store, что позволило Doctrine корректно применять ленивую загрузку. 2. Обновление схемы базы данных С помощью Doctrine Migrations была изменена структура базы данных: старый внешний ключ для связи OneToOne был удалён, и добавлен ключ для ManyToOne. 3. Корректировка запросов Теперь детали магазина загружаются только по необходимости 4. Профилирование С помощью инструментов Symfony была подтверждена оптимизация. Теперь связанные сущности не загружаются без явного запроса. Результаты 🟢Скорость выполнения запросов: уменьшилась в среднем на 35%. 🟢Использование памяти: значительно сократилось, так как избыточные данные больше не загружаются. 🟢Время ответа API: улучшилось на 20–30% для запросов с большими объёмами данных. 👉Ссылка на Medium

👑🧟 Король спама: насколько сильно ты бесишь коллег в рабочих чатах Признайся, ты тоже иногда отправляешь голосовые сообщени
👑🧟 Король спама: насколько сильно ты бесишь коллег в рабочих чатах Признайся, ты тоже иногда отправляешь голосовые сообщения из маршрутки? Или может быть, ты тот самый человек, который пишет «Привет» и исчезает на час? Всего 10 вопросов, которые помогут понять, являешься ли ты мастером цифрового этикета или главным спамером офиса. Готов узнать правду? 👉 Пройти тест

🙇‍♂️ Отобрать одного разраба на стек PHP + Vanilla JS после нескольких десятков созвонов-собеседований — вот они, современны
🙇‍♂️ Отобрать одного разраба на стек PHP + Vanilla JS после нескольких десятков созвонов-собеседований — вот они, современные реалии. Почему выпускники курсов присылают резюме пачками, но выхлоп от обучения собственных юристов компании оказывается выше, чем от собеседований по вакансии? — рассказывает Виталий Квитковский, руководитель отдела разработки и DevOps. Под катом вас ждет: ☑️ Кратко о структуре собеседования. ☑️ Разбор задач. ☑️ Чего обычно не хватает джунам и как это добрать? ☑️ Что такое базовое программирование? ☑️ Как этому научиться? 👉 Читать

💬 Пишите ли вы тесты на свой код? ❤️ — всегда пишу тесты, которые покрывают важные места 👍 — иногда пишу, зависит от проекта 🥱 — еще не разбирался с тестами