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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
Сегодня последний день!

🎁 Только при оплате до 19 октября — курс «Базовая математика» в подарок!

Успей попасть на экспресс-курс «Математика для Data Science»10 живых вебинаров, практика на Python, поддержка менторов и преподаватели из ВШЭ, Яндекс Практикума и Wildberries.

За 2 месяца разберёшься с тем, на чём держится Data Science:
• векторы, матрицы и регрессия;
• градиенты, оптимизация, вероятности и статистика;
• реальные задачи анализа данных;


🎓 Построишь математический фундамент и поймёшь, как работают алгоритмы ML под капотом.

👉 Записаться на курс

Старт — 6 ноября, не упусти бонус!🎁
💡 Совет по Laravel: метод «containsOneItem»

Иногда нам нужно убедиться, что коллекция содержит только один элемент. Вместо того чтобы вызывать метод count для коллекции, знаете ли вы, что есть элегантный метод containsOneItem(), который делает то же самое? 🚀

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

#vardump
👍9😁62👾1
🔥 Laravel + Битрикс: союз, который не должен был случиться

«Если ваш Битрикс тормозит, а Laravel кажется из другой вселенной — это статья для вас.»


Команда KISLOROD доказала, что миры можно объединить 🌍
Без форков, боли SEO-шников и падений 1С.

🧩 Что сделали:
— Laravel стал «соседом» Битрикса: берет на себя API, каталоги, фильтры, уведомления.
— Битрикс остался админкой и управляет коммерцией.
— Авторизация через JWT, события через Redis Streams, наблюдаемость через OpenTelemetry и Prometheus.

🚀 Результат:
Каталог отвечает за 150 мс, корзина — за 120 мс, заказы летят без тормозов.
А фронт теперь ходит в стабильный API и вообще не знает о Битриксе.

💡 Почему это важно:
Можно эволюционно мигрировать с монолита к headless-архитектуре — без боли и ночных деплоев.

📖 Полная статья на Хабре

Чтобы также проектировать приложения советуем пройти наш интенсив по архитектуре пока он со скидкой!

Библиотека пхпшника
😁103👍2🔥2
💡 Монолит против микросервисов: кто реально выигрывает?

Когда слышите слово «монолит», что первое приходит в голову?
👉 «Legacy», «тормозит», «нужно распилить»?
А зря. Хорошо спроектированный монолит может быть быстрее, надёжнее и проще в поддержке, чем плохо реализованные микросервисы. И вот почему 👇

🚧 Миф о «микросервисы = современно»
Архитектура — не мода. Она должна соответствовать структуре команды и бизнес-целям, а не трендам.

⚙️ Скрытая сложность
Каждый микросервис = отдельный репозиторий, пайплайн, конфиг, деплой.
В PHP это часто означает 5 Laravel-проектов с дублированной логикой и разъехавшимися зависимостями.

🏎️ Скорость против хаоса
Монолит → единый деплой, тесты и целостность.
Микросервисы → интеграционные баги, версия API, синхронизация.

🧱 Модульность — это не Kubernetes
DDD позволяет сделать монолит модульным: чёткие границы, без сетевых вызовов и лишней задержки.

🧭 Главное — стратегическая простота
Микросервисы не зло, просто они дорогие.
Начни с чистого монолита, вырасти в микросервисы — не наоборот.

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

#элементарный_выбор
👍10😁3
🔥 Когда понимаешь SOLID — жизнь становится проще

В октябре действует скидка 40% на все курсы от Proglib Academy, включая интенсив «Архитектуры и шаблоны проектирования»

📘 На интенсиве ты:

— разберёшься, как проектировать приложения, которые не ломаются при каждом изменении;
— освоишь SOLID-принципы, IoC, адаптеры и фабрики;
— научишься строить масштабируемые архитектуры;
— создашь собственную игру «Звёздные войны».

👨‍💻 Примеры кода на C#, Java, Python, PHP, C++ и JavaScript. Главное — понимать принципы, а не язык.

Преподаватель — Евгений Тюменцев, директор компании HWdTech, разрабатывал многопоточные кроссплатформенные приложения для IBM Watson.

📆 Формат: онлайн, 1 месяц.
📚 9 лекций + 2 бонусных занятия + практика.

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

👉 Переходи к курсам со скидкой 40%
😁2
🚀 composer/xdebug-handler — отключение Xdebug для повышения производительности

Библиотека composer/xdebug-handler предназначена для временного отключения расширения Xdebug в процессе выполнения PHP-скриптов, что позволяет значительно ускорить операции, такие как установка зависимостей с помощью Composer.

Зачем это нужно?
Xdebug предоставляет мощные возможности для отладки и профилирования PHP-кода, однако его включение может существенно замедлить выполнение скриптов. Например, Composer может работать в 3–4 раза медленнее при активном Xdebug, даже если не используются функции профилирования.

composer/xdebug-handler автоматически перезапускает процесс PHP без загрузки Xdebug, сохраняя при этом все необходимые настройки и переменные окружения. После завершения работы Xdebug восстанавливается.

Когда стоит использовать?
В CLI-скриптах, например, при запуске Composer.
В CI/CD пайплайнах, где важна скорость выполнения.
В разработке, когда необходимо временно ускорить выполнение скриптов без отключения Xdebug.

Установка

composer require composer/xdebug-handler

📦 Ссылка на репозиторий GitHub

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

#инструменты
How to: обнаружить и добавить отсутствующий RefreshDatabase в тестах Laravel

Статья объясняет проблему при тестировании Laravel-приложений: если в тестах не используется трейт RefreshDatabase, данные, созданные в БД (через фабрики, сидеры или HTTP-запросы), могут сохраняться между тестами и вызывать случайные ошибки при последующих запусках.

Автор показывает, как это предотвратить:
🔸 можно добавить RefreshDatabase глобально для всех feature-тестов через tests/Pest.php;
🔸 можно искать тесты без этого трейта с помощью grep, например:

grep -rL 'RefreshDatabase' tests/Feature | xargs grep -l '::factory('

— эта команда находит тесты, где нет трейта, но есть использование фабрик.

🔸можно расширить поиск и даже встроить такую проверку в GitHub Actions, чтобы CI падал, если в PR есть тесты без трейта, но с операциями, изменяющими БД.

В конце совет:
🔹 всегда использовать RefreshDatabase, так как он быстрее и безопаснее других способов очистки БД;
🔹 предпочитать фабрики и сидеры ручному созданию моделей;
🔹 проверять, что HTTP-тесты, создающие записи, также используют этот трейт.

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

Библиотека пхпшника
😁2
📚 Классика, которая не стареет: курс по структурам данных

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

Темы, которые остаются актуальными и сейчас:
➡️ Time travel — персистентные структуры данных: как «помнить прошлое», но не менять его.
➡️ Geometry — работа с многомерными данными (карты, таблицы, базы).
➡️ Dynamic optimality — идеальное дерево поиска: существует ли оно вообще?
➡️ Memory hierarchy — оптимизация работы с кэшем, даже не зная его размера.
➡️ Hashing — самая используемая структура данных в мире, и до сих пор поле активных исследований.
➡️ Integers — когда логарифм слишком медленно, а константа — возможна.
➡️ Dynamic graphs — как быстро пересчитывать граф при изменениях связей.
➡️ Strings — поиск подстрок в гигантских текстах (Google, ДНК и всё между).
➡️ Succinct structures — структуры, которые занимают почти столько же места, сколько сами данные.

🎓 Ссылка на лекции от MIT

Хочешь прокачаться в алгоритмах с практикой и поддержкой?
Алгоритмы и структуры данных
⚡️ Сейчас действует акция –40% на курс и ещё несколько программ.

🐸 Библиотека пхпшника
Please open Telegram to view this post
VIEW IN TELEGRAM
🎲 Простой скрипт на PHP: что будет — true или false?
$a = 12345678901234567890;
$b = $a + 1;
var_dump($a === $b);


🔍 На первый взгляд: $b = $a + 1 → два разных числа, значит === должен вернуть false.
Но PHP выведет true — значения «слипаются».

🧠 Почему так?

В PHP есть два числовых типа: int и float (double, по стандарту IEEE-754).

Если в коде стоит очень большое целое число, которое не помещается в диапазон int (на 64-битной системе около ±9.22e18), PHP автоматически парсит его как float.

В нашем примере оба литерала слишком большие → оба превращаются в float ещё на этапе разбора кода.

float хранит числа с ~15–17 значимыми цифрами. На значениях порядка 10¹⁹ шаг между двумя смежными представленными числами (ULP) может быть около 2048!

Разница в 1 между $a и $a + 1 слишком мала, чтобы быть «видимой» в представлении float. В итоге оба числа записываются как одно и то же значение.

При строгом сравнении === PHP сравнивает тип и внутреннее двоичное представление — и они совпадают → true.

⚠️ Где это может подвести в жизни

ID из БД или API
Длинные идентификаторы (BIGINT) попадают в PHP как числа → уязвимость к потере точности.

json_decode
Без JSON_BIGINT_AS_STRING большие числа могут превратиться в float.

Ключи массивов
Если использовать очень большое число как ключ, он может оказаться float, потом приведён к int, и несколько ключей «слипнутся» в один.

Сравнения и безопасность
Два разных числа могут быть признаны равными, что приводит к неожиданному поведению.

Как защититься

Передавайте идентификаторы как строки, а не числа.

При декодировании JSON используйте:
json_decode($json, false, 512, JSON_BIGINT_AS_STRING);


Для операций с большими числами — bcmath, gmp или аналоги:
bccomp("12345678901234567890", "12345678901234567899");  // -1  
bcadd("99999999999999999999", "1"); // "100000000000000000000"


Валидируйте входные данные: не приводите строку к int, если она вне допустимого диапазона.

На фронтенде (JavaScript) тоже осторожно: безопасная зона — до ±(2^53 − 1). Всё, что больше — отправляйте строкой.

💡 PHP «слипает» очень большие целые числа в float, и на больших значениях шаг между числами становится большим. Поэтому два разных литерала могут превратиться в одно и то же значение.

🔗 Хабр

Библиотека пхпшника
Please open Telegram to view this post
VIEW IN TELEGRAM
👍271
🛠 PHP-лайфхак: Автоформатирование кода в IDE

Если хочешь, чтобы код всегда был аккуратным и соответствовал стандартам — не делай это вручную, настрой автоформатирование в IDE!

🔍 Как это работает:

Используй PSR-12 стандарт для форматирования кода.

Подключи php-cs-fixer к проекту:

composer require --dev friendsofphp/php-cs-fixer


Настрой IDE (PhpStorm, VS Code) так, чтобы код автоматически форматировался при сохранении файла.

./vendor/bin/php-cs-fixer fix


⚡️ Почему это круто:

Все файлы соответствуют стандарту без ручной правки

Экономия времени на ревью и исправления стиля

Чистый и читаемый код для всей команды

💡 Совет: можно настроить pre-commit hook через Composer, чтобы перед каждым коммитом код автоматически форматировался:
"scripts": {
"pre-commit": "php-cs-fixer fix"
}


Теперь каждая сохранённая строка кода и каждый коммит будут соответствовать стандартам без лишней работы.

Библиотека пхпшника
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8🥱3👍2👏1😁1
💥 Октябрь — месяц апгрейда!

До конца этого месяца действует скидка 40% на все курсы Proglib Academy (кроме AI-агентов, ML для старта и математики).

Под акцию попал и наш хит — курс «Алгоритмы и структуры данных».

👨‍💻 Он подойдёт джунам, мидлам и всем, кто хочет писать код осознанно, а не наугад.

👨‍🏫 Преподаватели — инженеры из Яндекса и ВШЭ.

🎓 Сертификат по итогам обучения — в портфолио.

47 видеоуроков и 150 практических задач;
поддержка преподавателей и чат;
доступ к материалам на 12 месяцев.

Полная программа курса тут 👈

👉 Остальные курсы
🐘 PHP для начинающих: жизненный цикл приложений на Laravel

Статья объясняет жизненный цикл Laravel (Laravel Lifecycle) — то есть путь, который проходит HTTP-запрос от пользователя до формирования ответа в браузере.
Она предназначена для начинающих PHP-разработчиков и часто встречается на собеседованиях.

Ключевые идеи:
Laravel Lifecycle — это последовательность шагов, через которые проходит запрос внутри фреймворка.

Основные этапы:
public/index.php — точка входа, с которой всё начинается.
bootstrap/app.php — создаётся экземпляр приложения и подгружается ядро (Kernel).
Service Providers — инициализируют основные функции: БД, кэш, маршрутизацию, аутентификацию.
Middleware — фильтры, проверяющие запросы (например, авторизацию).
Routing и Controller — определяют, какой метод контроллера должен обработать запрос.
Models и Database — при необходимости извлекаются данные из БД.
View и Response — данные преобразуются в HTML-ответ и отправляются пользователю.

Авторы объясняют это на примере ресторана:
вход — index.php,
кухня — app.php,
повар — контроллер,
блюдо — ответ пользователю.

Понимание жизненного цикла Laravel помогает лучше дебажить, писать оптимизированный код и осознать, как фреймворк превращает обычный HTTP-запрос в готовую HTML-страницу.

👉 Читать статью

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

#php_азбука
3👍2
✍️ Объявляем перепись «боевых машин»!

Говорят, айтишника можно опознать по двум признакам: тёмная тема в IDE и 100+ вкладок в браузере, которые съели всю ОЗУ. Давайте проверим, на чём всё это крутится.

Расскажите в комментариях, какой у вас рабочий ноутбук? Что за модель, какой чип и сколько гигабайт памяти спасают вас от коллапса системы? 💻

🐸 Библиотека пхпшника
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱4
Laravel-совет

Директива @env_required() позволяет проверять, что переменная среды установлена и имеет значение, отличное от null. Она может быть полезна для обеспечения того, чтобы приложение работало правильно только при наличии определенных переменных среды.

В нашем примере директива @env_required() используется для проверки переменной среды APP_KEY. Если переменная не установлена, будет выброшено исключение.

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

#vardump
👍63👾1
20 лет Symfony!

История фреймворка представленная в классном стиле 👉 Клик

Библиотека пхпшника
👍19🥰3
📚 Реляционные базы данных в примерах (2025)

В книге автор собрал все ключевые идеи реляционных СУБД — от понятия данных до логики работы транзакций. Тебя ждет фундаментальная теория и наглядная практика проектирования БД:

▪️таблицы, ключи, связи;
▪️нормальные формы, представления;
▪️триггеры, хранимые процедуры и многое другое в примерах.

🔥 Подойдёт тем, кто:

▪️когда-то изучал базы, но уже все забыл;
▪️имеет узкий практический опыт и хочет расширить знания;
▪️хочет в предельно сжатые сроки начать использовать реляционные БД в работе.

🔗 Скачать
🤞 Поддержать канал бустом

🐸 Книги для программистов
Please open Telegram to view this post
VIEW IN TELEGRAM
6
💻 Подборка новостей по PHP за неделю:​

🔹 PHP 8.5.0 RC2 — второй релиз-кандидат доступен для тестирования. Выход финальной версии всё ближе: разработчиков призывают проверять совместимость и сообщать о багах.

🔹 Closures в константных выражениях (PHP 8.5) — теперь можно использовать замыкания прямо в константах и как значения по умолчанию (например, в атрибутах). Это существенно расширяет выразительность языка.

🔹 Новый URI-экстеншен в PHP 8.5 — в стандартную библиотеку добавлен полноценный парсер URI, соответствующий RFC 3986 и WHATWG URL. Больше не нужно сторонних пакетов для корректного парсинга URL.

🔹 Laravel 12.34 — появился failover queue driver для отказоустойчивости очередей, улучшен полнотекстовый поиск в Scout и добавлена возможность откладывать выполнение HTTP batch-запросов.

🔹 Symfony 13–19 октября — продолжается полировка релизов 7.4 и 8.0, запущен сайт к 20-летию Symfony и опубликована первая статья серии New in Symfony 7.4.

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

#свежак
😍31👏1
💡 Совет по Laravel: Результат команды

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

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

#vardump