Библиотека PHP программиста 👨🏼💻👩💻
رفتن به کانال در Telegram
Полезные материалы по PHP, Laravel, Symfony, CodeIgniter, CakePHP, Phalcon По всем вопросам @evgenycarter
نمایش بیشتر2 094
مشترکین
-224 ساعت
-47 روز
-1130 روز
آرشیو پست ها
🚀 Если производительность является приоритетом в вашем проекте, возможно, стоит полностью отключить lazy loading.
Eloquent выбросит огромное исключение, если вы попытаетесь обратиться к связи, которая не была загружена заранее (eager-loaded).
👉 @php_lib
Вы когда-нибудь импортировали несколько классов из одного пространства имён вот так?
Это изящный ход или грязная ошибка? Делись мнением в комментариях!
#Laravel
👉 @php_lib
🚫 Хватит бороться с монолитом!
Узнайте, как создавать масштабируемые и гибкие приложения на PHP и Symfony.
🎯 На открытом уроке разберем современную event-driven архитектуру:
— Symfony Messenger: обработка событий синхронно и асинхронно.
— CQRS: разделение команд и запросов для производительности.
— Event Sourcing: как хранить историю всех изменений состояния.
✅ Поймем, в каких проектах эти подходы действительно необходимы, и посмотрим на живой код.
💡 Вебинар будет полезен:
— PHP и Symfony-разработчикам, растущим до уровня мидл+ и сеньоров.
— Тимлидам и архитекторам, планирующим устойчивые к нагрузкам системы.
— Начинающим специалистам, чтобы увидеть перспективы развития.
📅 Регистрируйтесь на бесплатный вебинар «Event-driven архитектура в PHP и Symfony» 1 октября в 20:00!:
https://vk.cc/cPQvA3
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Совет по Laravel💡
Знаете ли вы... В Laravel есть метод `
withProgressBar()`, который позволяет добавлять прогресс-бары к консольным командам.
#Laravel
👉 @php_lib💡Совет по Laravel
Определение языка пользователя
Laravel использует компонент HttpFoundation из Symfony, который предоставляет полезные возможности. Если вы работаете с локализацией и нужно определить предпочитаемый язык пользователя, просто вызовите метод getPreferredLanguage 🚀
👉 @php_lib
💡Знал ли вы, что…
Метод Number::abbreviate в Laravel преобразует сложные числа в удобочитаемый формат:
👉 @php_lib
🚀 Подборка Telegram каналов для программистов
Системное администрирование, DevOps 📌
https://t.me/bash_srv Bash Советы
https://t.me/win_sysadmin Системный Администратор Windows
https://t.me/sysadmin_girl Девочка Сисадмин
https://t.me/srv_admin_linux Админские угодья
https://t.me/linux_srv Типичный Сисадмин
https://t.me/devopslib Библиотека девопса | DevOps, SRE, Sysadmin
https://t.me/linux_odmin Linux: Системный администратор
https://t.me/devops_star DevOps Star (Звезда Девопса)
https://t.me/i_linux Системный администратор
https://t.me/linuxchmod Linux
https://t.me/sys_adminos Системный Администратор
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux
1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
https://t.me/DevLab1C 1С:Предприятие 8
https://t.me/razrab_1C 1C Разработчик
https://t.me/buh1C_prog 1C Программист | Бухгалтерия и Учёт
https://t.me/rabota1C_rus Вакансии для программистов 1С
Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://t.me/pythonofff Python академия.
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Big Data, Machine Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT
https://t.me/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
https://t.me/lifeproger Жизнь программиста. Авторский канал.
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_2 Хакер Free
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
Математика 📌
https://t.me/Pomatematike Канал по математике
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
https://t.me/matgeoru Математика | Геометрия | Логика
Excel лайфхак📌
https://t.me/Excel_lifehack
https://t.me/mir_teh Мир технологий (Technology World)
Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
Сегодня хочу поговорить про одну проблему, с которой я сталкивался сам и вижу её у других PHP-разработчиков - “магия” в коде.
Что я имею в виду? Это когда ты открываешь проект, а там сервисы создаются «сами собой», данные в объект попадают неизвестно откуда, а половина зависимостей подтягивается где-то «под капотом».
Вроде удобно - меньше кода писать. Но вот через пару месяцев ты сам же сидишь и думаешь: «А откуда вообще берётся этот объект? И почему тут такая зависимость?»
🔹 Основная проблема магии - она убивает явность кода. Чем больше скрытых механизмов, тем сложнее поддерживать проект и подключать новых разработчиков.
Примеры из практики:
- Использование глобальных хелперов вместо DI.
- Автоматический вызов методов через __call или __get.
- Массовая магия в Laravel (facades, hidden bindings и т.д.).
🛠 Что можно сделать:
1. Минимизировать скрытые механизмы - лучше написать чуть больше явного кода.
2. Использовать контейнер зависимостей, но регистрировать их явно.
3. Документировать «точки входа» и договориться в команде, где магия допустима, а где нет.
Когда код становится предсказуемым, ты меньше тратишь времени на дебаг, быстрее понимаешь чужие изменения и увереннее двигаешься вперёд.
А как у вас в проектах? Вы за явный код или любите, когда всё работает «само»?
👉 @php_lib
💡 Совет по Laravel
Нужно проверить, что в вашем вводе существуют определённые ключи массива?
Используйте required_array_keys, чтобы убедиться, что в данных массива присутствуют конкретные ключи - идеально подходит для API-эндпоинтов, которые ожидают строгую структуру данных.
Ссылка на документацию: https://laravel.com/docs/12.x/validation#rule-required-array-keys
👉 @php_lib
Каким мог бы быть Laravel WebServer, если бы он работал через очередь?
Привет! Сегодня я хочу поделиться с вами одной интересной идеей — а что если Laravel WebServer принимал бы все HTTP-запросы не напрямую, а через обычную очередь задач Laravel Queue? Вместо привычных PHP-FPM, Swoole, RoadRunner или FrankenPHP — весь запрос обрабатывался бы как задача в очереди.
Звучит странно? Давайте разбираться, как это могло бы работать и что из этого получилось бы.
https://laravel.su/p/kakim-mog-by-byt-laravel-webserver-esli-by-on-rabotal-cerez-ocered
👉 @php_lib
Gemini API PHP Client
Клиент Google Gemini API для PHP позволяет вам использовать модель искусственного интеллекта Gemini.
Установка
composer require gemini-api-php/client
Базовая генерация текста
use GeminiAPI\Client;
use GeminiAPI\Resources\Parts\TextPart;
$client = new Client('GEMINI_API_KEY');
$response = $client->geminiPro()->generateContent(
new TextPart('PHP in less than 100 chars'),
);
print $response->text();
// PHP: A server-side scripting language used to create dynamic web applications.
// Easy to learn, widely used, and open-source.
https://github.com/gemini-api-php/client
👉 @php_lib🚀 Почему стоит выбрать Symfony для разработки?
🔹 Модульность и компоненты — независимые части, которые можно использовать отдельно, ускоряя развитие и повышая гибкость.
🔹 Гибкая настройка — высокий уровень кастомизации, поддержка Dependency Injection для сложных проектов.
🔹 Надежность и поддержка — LTS-версии до 3 лет, стабильность и регулярные обновления для бизнеса.
🔹 Инструменты разработки — Symfony CLI, профайлер, генераторы кода, автоконфигурация — ускоряют работу и отладку.
🔹 Сообщество и документация — большое сообщество, обучающие материалы, рецепты и мероприятия помогают быстро освоить и решать задачи.
🧩 Где используют? — Spotify, BlaBlaCar, Dailymotion, а также компоненты Symfony используют Laravel и другие фреймворки.
Выбирайте Symfony — создавайте масштабируемые, гибкие и надежные проекты!
Пройдите тест, получите скидку на курс «Symfony Framework» и станьте востребованным PHP-разработчиком с передовыми навыками: https://vk.cc/cOTLs6
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Сегодня хочу поделиться одной небольшой, но очень полезной привычкой, которая здорово экономит время в работе с PHP-проектами.
Когда я только начинал, я постоянно забывал про php artisan tinker (если речь про Laravel) или встроенный интерактивный шелл
php -a. А ведь это супер-удобный способ быстро проверить кусок кода, протестировать работу функции или глянуть, что вернет тот или иной запрос.
Например, нужно быстро понять, как работает кастомный accessor в модели? Вместо того чтобы городить временные роуты или var_dump-ить в контроллере - открываешь tinker:
php artisan tinker
И сразу работаешь с моделью:
$user = App\Models\User::find(1);
$user->profile->full_name;
Буквально за пару секунд получаешь ответ, без лишнего мусора в коде.
Еще круто использовать tinker для тестирования сервисов или вызова хелперов. Иногда я даже проверяю SQL-запросы через Eloquent, чтобы потом использовать их в сидерах или тестах.
Короче, мой совет: если еще не используете — приучите себя чаще заходить в tinker. Это ваш "быстрый песочница", которая всегда под рукой.
А вы как чаще отлаживаете код в Laravel - через tinker, dd() или дебаггер в IDE? Напишите в комментах, будет интересно сравнить!
👉 @php_lib💡 Совет по Laravel
Не позволяй запросам к базе данных замедлять работу. Используй фасад Cache в Laravel для временного кэширования данных и сокращения количества обращений к базе.
👉 @php_lib
💡 Совет по Laravel
Передавайте большие файлы без перебоев, используя потоки.
👉 @php_lib
🔧 Сложности с масштабированием консьюмеров в RabbitMQ? Узнайте, как избежать ошибок, которые могут привести к потерям в порядке обработки сообщений.
📅 На открытом уроке 21 августа в 20:00 МСК разберём реальные кейсы и покажем, как правильно масштабировать консьюмеры, сохраняя порядок обработки. Узнаете, какие проблемы могут возникнуть при некорректном масштабировании и как их решить.
🎯 Получите ценные знания по прогнозированию и устранению проблем, повысите производительность системы и избегайте критических ошибок.
🚀 Посетите вебинар и получите скидку на полный курс «Symfony Framework»! Регистрация открыта: https://vk.cc/cOwLiZ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Нужно ли в PHP перед вызовом функций ставить обратный слэш?
Несколько лет назад я прочитал статью «How to dump and inspect PHP OPCodes» в которой наконец увидел, что опкоды в PHP действительно существуют. И кроме того, мы, разработчики, которые пишем на PHP на эти опкоды можем влиять, тем самым оптимизируя производительность нашего кода. В статье так же рассказывалось о том, как применение бэкслэшей может ускорить выполнение программ. Я был под впечатлением...
Опкодами (см. Код операции) называется некий промежуточный код, который всё ещё понятен человеку и который выполняется некой исполняющей средой. В случае PHP этой средой является Zend Virtual Machine (она же Zend Engine).
https://habr.com/ru/articles/934316/
👉 @php_lib
Сегодня хочу поговорить о ситуации, с которой сталкивался, думаю, каждый PHP-разработчик — "магическое" исчезновение переменных.
Да, вот эти моменты, когда ты уверен, что
$userData тут точно есть… а в реальности — Undefined variable: userData.
Причина часто банальна — область видимости.
Многие забывают, что переменные в PHP живут в контексте, где они созданы. Например, внутри функции нельзя просто так достучаться до переменной, объявленной снаружи — она там не существует.
Пример:
$userName = 'Иван';
function greet() {
echo "Привет, $userName"; // Ошибка!
}
greet();
Чтобы это работало, у нас есть три пути:
1. Передать параметром:
function greet($name) {
echo "Привет, $name";
}
greet($userName);
2. Использовать global (но я не советую — код становится менее предсказуемым):
global $userName;
3. Замыкание с use:
$userName = 'Иван';
$greet = function() use ($userName) {
echo "Привет, $userName";
};
$greet();
💡 Совет: всегда старайтесь передавать данные явно - это делает код чище и облегчает тестирование.
А вы как решаете проблему передачи переменных между функциями и методами? Используете глобальные, DI или что-то ещё?
👉 @php_libСегодня хочу поделиться темой, которая регулярно спасает мне часы (а иногда и дни) работы — как быстро находить и устранять узкие места в производительности PHP-приложения.
Когда проект начинает подтормаживать, первая реакция — «ну, наверное, сервер слабый». А на деле 80% проблем можно найти прямо в коде. Вот мой рабочий чеклист:
1. Включаю профилировщик.
Если проект на Laravel —
laravel-debugbar или Clockwork. Для чистого PHP — Xdebug или Tideways. Они показывают, какие функции и запросы жрут время.
2. Смотрю SQL-запросы.
Удивительно, сколько «тормозов» сидит именно в базе. Часто помогает банальное добавление индексов или переписывание одного запроса.
3. Ищу повторяющиеся операции.
Иногда вижу: одна и та же функция дергается в цикле по 1000 раз, хотя результат можно закешировать.
4. Анализирую работу с файлами.
Если есть много file_get_contents() или операций с большими файлами — выношу их в фоновые задачи (очереди).
5. Включаю кэширование.
Даже простой OPcache и Redis для хранения промежуточных данных творят чудеса.
Мой совет: не пытайтесь «оптимизировать на глаз». Всегда начинайте с измерений — профилировщик покажет правду.
А вы как ищете и устраняете узкие места? Какие инструменты используете чаще всего?
👉 @php_lib🔥 Ищете эффективные способы кэширования в Symfony и хотите повысить производительность приложений?🚀
Присоединяйтесь к открытому уроку «Инструменты кэширования в Symfony» 7 августа в 20:00 МСК.
▌ Что вы узнаете:
- Теория кэширования и её применение в Symfony
- Как правильно использовать компоненты Symfony Cache
- Эффективная работа с распределённым кешем и блокировками
Получите практические знания, которые можно применить в реальных проектах, и улучшите производительность своих приложений с помощью продвинутых методов кэширования в Symfony.
📎Зарегистрируйтесь на урок и получите скидку на большую программу обучения «Symfony Framework»: https://vk.cc/cOfb5D
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
