es
Feedback
Библиотека PHP программиста 👨🏼‍💻👩‍💻

Библиотека PHP программиста 👨🏼‍💻👩‍💻

Ir al canal en Telegram

Полезные материалы по PHP, Laravel, Symfony, CodeIgniter, CakePHP, Phalcon По всем вопросам @evgenycarter

Mostrar más
2 094
Suscriptores
-224 horas
-47 días
-1130 días
Archivo de publicaciones
Сегодня хочу поделиться полезной практикой, которая реально экономит время при работе с чужим кодом — быстрая навигация и пон
Сегодня хочу поделиться полезной практикой, которая реально экономит время при работе с чужим кодом — быстрая навигация и понимание проекта через composer.json. Когда попадаешь в новый проект, чаще всего первым делом начинаешь блуждать по папкам, читать контроллеры, роуты, сервисы… Но есть более быстрый способ понять архитектуру - сразу открыть composer.json. Что можно сразу понять: - Какие библиотеки используются - а значит, какие фреймворки, ORM, инструменты кеширования или логирования ждут нас внутри. - Какая версия PHP нужна — помогает избежать сюрпризов с несовместимыми функциями. - Автозагрузка - раздел autoload и autoload-dev сразу подскажет, где искать код и как он структурирован. Например, если вижу App\\ => src/, я знаю, что основной код живёт в src. - Скрипты - в scripts иногда прячутся удобные команды для деплоя, генерации, тестов, которые можно запускать через composer run-script. Я часто делаю так: открываю composer.json, сразу строю для себя “карту” проекта и понимаю, где искать бизнес-логику и какие инструменты уже встроены. А вы как знакомитесь с новым проектом? С чего начинаете? 👉 @php_lib

Полный курс Laravel Swagger. REST API Laravel 00:00:00 Введение 00:04:25 Делаем заготовку 00:16:20 Установка Swagger 00:22:18 Общие аннотации и настройки Swagger 00:28:01 CRUD со Swagger 01:03:03 Установка JWT Auth 01:13:08 Авторизация и защищенные роуты в Swagger 01:20:20 Бонус. Нестандартные тело запроса и ответа источник 👉 @php_lib

🐘 Тест по PHP 🔥 Проверь насколько хорошо ты знаешь PHP Ответишь — пройдешь на продвинутый курс "PHP Developer. Professional
🐘 Тест по PHP 🔥 Проверь насколько хорошо ты знаешь PHP Ответишь — пройдешь на продвинутый курс "PHP Developer. Professional" от OTUS по специальной цене. ➡️ ПРОЙТИ ТЕСТ: https://vk.cc/cO9GRJ 🎁 Дарим промокод, который дает скидку на обучение - PHP_PRO_07 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

💡Совет по Laravel: Проверка дат с помощью Carbon Уверен, тебе хоть раз приходилось проверять, истекла ли дата или находится
💡Совет по Laravel: Проверка дат с помощью Carbon Уверен, тебе хоть раз приходилось проверять, истекла ли дата или находится в будущем. Так как Laravel под капотом использует Carbon, у тебя есть доступ к множеству удобных методов, которые позволяют делать это элегантно 🚀 👉 @php_lib

Как правильно работать с большими массивами данных в PHP, чтобы не убить память и сервер. Когда мы пишем скрипты, которые обр
Как правильно работать с большими массивами данных в PHP, чтобы не убить память и сервер. Когда мы пишем скрипты, которые обрабатывают тысячи (или миллионы) строк — будь то импорт из CSV, выгрузка из БД или массовая обработка, — часто допускается ошибка: всё грузится в память сразу. В итоге сервер умирает от нехватки памяти, а скрипт - от таймаута. Что делать? 1. Частями, а не всё сразу Например, если вы работаете с PDO:

   $stmt = $pdo->query("SELECT * FROM big_table");
   while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
       process($row); // Обрабатываем каждую строку на лету
   }
   
Так данные не будут храниться в огромном массиве — обработка идёт построчно. 2. Используйте генераторы Генераторы (yield) позволяют работать с большими данными лениво:

   function getRows($pdo) {
       $stmt = $pdo->query("SELECT * FROM big_table");
       while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
           yield $row;
       }
   }

   foreach (getRows($pdo) as $row) {
       process($row);
   }
   
Память почти не растёт — магия генераторов. 3. Разбивайте на батчи Иногда эффективнее брать кусками:

   $limit = 1000;
   for ($offset = 0; ; $offset += $limit) {
       $rows = $pdo->query("SELECT * FROM big_table LIMIT $limit OFFSET $offset")->fetchAll();
       if (!$rows) break;
       foreach ($rows as $row) {
           process($row);
       }
   }
   
4. Не забывайте про стриминг файлов Если это CSV или JSON — читайте построчно через fgets() или stream_get_line(), а не file_get_contents(). Такие подходы сильно упрощают жизнь и экономят ресурсы. А вы как работаете с большими данными? Используете генераторы или предпочитаете батчи? 👉 @php_lib

🚀 Вебинар: Тестируем скорость сайтов как профи с WebPageTest! Привет, backend-разработчик! Ты уверен, что твой сайт летает,
🚀 Вебинар: Тестируем скорость сайтов как профи с WebPageTest! Привет, backend-разработчик! Ты уверен, что твой сайт летает, а не ползет, как улитка в пробке? 🐌💨 Бесплатный вебинар по WebPageTest покажет, как измерить скорость твоего веб-приложения без магии и шаманских бубнов: регистрация Разберем: ✅ Как тестировать скорость правильно (спойлер: F5 – не метод) ✅ Что скрывает архитектура WebPageTest ✅ Как читать результаты тестов и не плакать После вебинара ты сможешь: 🔹 Выбирать систему тестирования 🔹 Проводить тесты так, чтобы даже Google позавидовал 🔹 Анализировать результаты и чинить тормоза 📅 Регистрируйся → получишь напоминалку перед стартом: регистрация P.S. Если хочешь прокачаться в оптимизации на 100%, приходи на курс «Оптимизация производительности веб-приложений». Не упусти шанс сделать сайты быстрее, чем твой коллег успевает сказать «Это не баг, это фича»! 😉 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Совет по PHP/Laravel 🚀 Когда у вас есть два случая для кастомных исключений, относящихся к одному и тому же домену, вместо с
Совет по PHP/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

💡 Совет для Laravel‑разработчиков Используйте Crypt facade — он уже есть в Laravel: - Работает на вашем APP_KEY - Шифрует да
💡 Совет для Laravel‑разработчиков Используйте Crypt facade — он уже есть в Laravel: - Работает на вашем APP_KEY - Шифрует данные через AES‑256‑CBC - Защищает от подделки (MAC) 🔐 Храните API‑токены, пароли и секреты безопасно — прямо из коробки. 👉 @php_lib

Простой, но полезный приём для дебага в Laravel — логирование SQL-запросов в человекочитаемом виде. По умолчанию DB::listen()
Простой, но полезный приём для дебага в Laravel — логирование SQL-запросов в человекочитаемом виде. По умолчанию DB::listen() в Laravel выводит запрос с плейсхолдерами ?, а значения параметров идут отдельно. Это не всегда удобно — сложно быстро понять, что реально выполняется. Вот сниппет, который собирает полный SQL-запрос с подставленными значениями:

DB::listen(function ($query) {
    $sql = $query->sql;
    foreach ($query->bindings as $binding) {
        $binding = is_numeric($binding) ? $binding : "'{$binding}'";
        $sql = preg_replace('/\?/', $binding, $sql, 1);
    }
    logger()->info("Executed query: {$sql}");
});
📌 Пример:

select * from users where email = 'john@example.com' and age > 18
Очень удобно, когда ты хочешь понять, почему условие WHERE не сработало или почему запрос медленный. Можно кинуть это в AppServiceProvider::boot(), и на локальной машине всегда видеть, что реально уходит в базу. 👉 @php_lib

💡Совет по Laravel Знаешь ли ты… о методе skip в планировщике Laravel? С помощью skip() можно указать, когда команда не должн
💡Совет по Laravel Знаешь ли ты… о методе skip в планировщике Laravel? С помощью skip() можно указать, когда команда не должна выполняться. 👉 @php_lib

Хотите стать тимлидом на PHP? Задумывались, как сделать следующий шаг в своей карьере и перейти к менеджерской роли? 16 июля
Хотите стать тимлидом на PHP? Задумывались, как сделать следующий шаг в своей карьере и перейти к менеджерской роли? 16 июля в 20:00 МСК OTUS проведет открытый вебинар «Что нужно знать, чтобы стать тимлидом на PHP». Мы подробно разберем, какие soft и hard skills нужны для этой роли, какую литературу стоит изучить, какие типичные вопросы задают на собеседованиях для тимлидов, и какие ожидания предъявляют компании. Этот вебинар поможет не только тем, кто уже является тимлидом, но и разработчикам, стремящимся к карьерному росту. Узнайте, как подготовиться к качественно новому шагу в вашем профессиональном пути и получите практические рекомендации для карьерного роста. Открытый урок пройдет в преддверии старта курса «PHP Developer. Professional». Все участники вебинара получат скидку на обучение. Регистрация открыта: https://vk.cc/cNsThX Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Laravel lazy() против get() Знаешь ли ты… что можно обрабатывать большие объёмы данных из базы с помощью lazy() — это гораздо
Laravel lazy() против get() Знаешь ли ты… что можно обрабатывать большие объёмы данных из базы с помощью lazy() — это гораздо эффективнее по памяти, чем get(). 👉 @php_lib

Сегодня я покажу вам, как быстро разрулить хаос в проекте с кастомным фреймворком, где нет нормального логирования. Ситуация:
Сегодня я покажу вам, как быстро разрулить хаос в проекте с кастомным фреймворком, где нет нормального логирования. Ситуация: клиент дал старый проект, ошибок — куча, но логов нет вообще. В коде try-catch, а в catch — пусто. Что делать? Вот мой быстрый чеклист, который спасал не раз: 1. Глобальный обработчик ошибок и исключений

set_error_handler(function ($errno, $errstr, $errfile, $errline) {
    error_log("[PHP ERROR] $errstr in $errfile:$errline");
    return false;
});

set_exception_handler(function (Throwable $e) {
    error_log("[UNCAUGHT EXCEPTION] " . $e->getMessage() . ' in ' . $e->getFile() . ':' . $e->getLine());
});
Добавил в index.php, и уже вижу, что именно валится. 2. Простой логгер на каждый чих Создал файл logger.php:

function log_debug($msg) {
    file_put_contents(__DIR__.'/debug.log', date('[Y-m-d H:i:s] ') . $msg . PHP_EOL, FILE_APPEND);
}
В нужных местах пишу log_debug('что-то случилось');. Дёшево и сердито, зато работает. 3. Прокинул заголовки и запросы В самых первых строках запроса:

log_debug("REQUEST: " . $_SERVER['REQUEST_METHOD'] . ' ' . $_SERVER['REQUEST_URI']);
log_debug("HEADERS: " . json_encode(getallheaders()));
log_debug("POST: " . json_encode($_POST));
Теперь видно, с чем именно клиент ломает мой старый код. Не всегда есть время подтягивать Monolog и делать всё красиво. Иногда нужно быстро найти, где горит — и потушить. А уже потом наводить красоту. А вы как действуете в таких ситуациях? Есть свои приёмы? 👉 @php_lib

Столкнулись с проблемой пересечения временных интервалов в вашем сервисе бронирования? В PostgreSQL есть решение, и мы готовы
Столкнулись с проблемой пересечения временных интервалов в вашем сервисе бронирования? В PostgreSQL есть решение, и мы готовы поделиться им с вами! 1 июля на вебинаре "Решение проблемы пересечения временных интервалов с использованием PostgreSQL" вы получите подробное руководство по использованию trigger functions и constraints для построения эффективной системы бронирования. 👨‍💻 Покажем, как использовать встроенные возможности PostgreSQL для упрощения разработки и повышения надежности системы. 💡 Для кого это важно? Для разработчиков на PHP, работающих с системами бронирования и ищущих лучшие практики. Открытый урок проходит в преддверии старта курса «Разработчик на Spring Framework» — все участники получат скидку на обучение. 📅 Присоединяйтесь к вебинару и научитесь работать с PostgreSQL так, как этого требует реальная практика: https://vk.cc/cN4NdY Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

strlen() vs mb_strlen(): Почему 71% PHP-разработчиков ошибаются В этой статье разберем, как PHP работает со строками и почему
strlen() vs mb_strlen(): Почему 71% PHP-разработчиков ошибаются В этой статье разберем, как PHP работает со строками и почему даже простой вызов strlen() может привести к неожиданным результатам. На примере крайне простой задачи "что выведет echo strlen('привет!');" посмотрим, что и как влияет на подсчет длины строки, заглянем внутрь реализации strlen() и развенчаем миф о строках как массивах. https://habr.com/ru/articles/919192/ 👉 @php_lib

💡Совет по Laravel Строишь URL с динамическими параметрами для HTTP-запроса? Не нужно вручную склеивать длинную строку! Испол
💡Совет по Laravel Строишь URL с динамическими параметрами для HTTP-запроса? Не нужно вручную склеивать длинную строку! Используй URI-шаблоны с методом withUrlParameters() — так код станет чище и понятнее при работе с API. https://laravel.com/docs/12.x/http-client#uri-templates 👉 @php_lib

💡Совет по Laravel Знаешь ли ты, что можно выбрасывать исключения условно всего в одну строку с помощью throw_if() — идеально
💡Совет по Laravel Знаешь ли ты, что можно выбрасывать исключения условно всего в одну строку с помощью throw_if() — идеально для лаконичного кода в контроллерах и сервисах. 👉 @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