💡 Совет по Laravel
Не позволяй запросам к базе данных замедлять работу. Используй фасад Cache в Laravel для временного кэширования данных и сокращения количества обращений к базе.
👉 @php_lib
Не позволяй запросам к базе данных замедлять работу. Используй фасад Cache в Laravel для временного кэширования данных и сокращения количества обращений к базе.
👉 @php_lib
👍10
Сегодня хочу поделиться одной небольшой, но очень полезной привычкой, которая здорово экономит время в работе с PHP-проектами.
Когда я только начинал, я постоянно забывал про php artisan tinker (если речь про Laravel) или встроенный интерактивный шелл
Например, нужно быстро понять, как работает кастомный accessor в модели? Вместо того чтобы городить временные роуты или var_dump-ить в контроллере - открываешь tinker:
И сразу работаешь с моделью:
Буквально за пару секунд получаешь ответ, без лишнего мусора в коде.
Еще круто использовать tinker для тестирования сервисов или вызова хелперов. Иногда я даже проверяю SQL-запросы через Eloquent, чтобы потом использовать их в сидерах или тестах.
Короче, мой совет: если еще не используете — приучите себя чаще заходить в tinker. Это ваш "быстрый песочница", которая всегда под рукой.
А вы как чаще отлаживаете код в Laravel - через tinker, dd() или дебаггер в IDE? Напишите в комментах, будет интересно сравнить!
👉 @php_lib
Когда я только начинал, я постоянно забывал про 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
👍11❤1👎1🤔1
🚀 Почему стоит выбрать Symfony для разработки?
🔹 Модульность и компоненты — независимые части, которые можно использовать отдельно, ускоряя развитие и повышая гибкость.
🔹 Гибкая настройка — высокий уровень кастомизации, поддержка Dependency Injection для сложных проектов.
🔹 Надежность и поддержка — LTS-версии до 3 лет, стабильность и регулярные обновления для бизнеса.
🔹 Инструменты разработки — Symfony CLI, профайлер, генераторы кода, автоконфигурация — ускоряют работу и отладку.
🔹 Сообщество и документация — большое сообщество, обучающие материалы, рецепты и мероприятия помогают быстро освоить и решать задачи.
🧩 Где используют? — Spotify, BlaBlaCar, Dailymotion, а также компоненты Symfony используют Laravel и другие фреймворки.
Выбирайте Symfony — создавайте масштабируемые, гибкие и надежные проекты!
Пройдите тест, получите скидку на курс «Symfony Framework» и станьте востребованным PHP-разработчиком с передовыми навыками: https://vk.cc/cOTLs6
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🔹 Модульность и компоненты — независимые части, которые можно использовать отдельно, ускоряя развитие и повышая гибкость.
🔹 Гибкая настройка — высокий уровень кастомизации, поддержка Dependency Injection для сложных проектов.
🔹 Надежность и поддержка — LTS-версии до 3 лет, стабильность и регулярные обновления для бизнеса.
🔹 Инструменты разработки — Symfony CLI, профайлер, генераторы кода, автоконфигурация — ускоряют работу и отладку.
🔹 Сообщество и документация — большое сообщество, обучающие материалы, рецепты и мероприятия помогают быстро освоить и решать задачи.
🧩 Где используют? — Spotify, BlaBlaCar, Dailymotion, а также компоненты Symfony используют Laravel и другие фреймворки.
Выбирайте Symfony — создавайте масштабируемые, гибкие и надежные проекты!
Пройдите тест, получите скидку на курс «Symfony Framework» и станьте востребованным PHP-разработчиком с передовыми навыками: https://vk.cc/cOTLs6
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Gemini API PHP Client
Клиент Google Gemini API для PHP позволяет вам использовать модель искусственного интеллекта Gemini.
Установка
Базовая генерация текста
https://github.com/gemini-api-php/client
👉 @php_lib
Клиент 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
👍8
Каким мог бы быть 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
Привет! Сегодня я хочу поделиться с вами одной интересной идеей — а что если 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
👍6👎1
💡 Совет по Laravel
Нужно проверить, что в вашем вводе существуют определённые ключи массива?
Используйте required_array_keys, чтобы убедиться, что в данных массива присутствуют конкретные ключи - идеально подходит для API-эндпоинтов, которые ожидают строгую структуру данных.
Ссылка на документацию: https://laravel.com/docs/12.x/validation#rule-required-array-keys
👉 @php_lib
Нужно проверить, что в вашем вводе существуют определённые ключи массива?
Используйте required_array_keys, чтобы убедиться, что в данных массива присутствуют конкретные ключи - идеально подходит для API-эндпоинтов, которые ожидают строгую структуру данных.
Ссылка на документацию: https://laravel.com/docs/12.x/validation#rule-required-array-keys
👉 @php_lib
👍5
Сегодня хочу поговорить про одну проблему, с которой я сталкивался сам и вижу её у других PHP-разработчиков - “магия” в коде.
Что я имею в виду? Это когда ты открываешь проект, а там сервисы создаются «сами собой», данные в объект попадают неизвестно откуда, а половина зависимостей подтягивается где-то «под капотом».
Вроде удобно - меньше кода писать. Но вот через пару месяцев ты сам же сидишь и думаешь: «А откуда вообще берётся этот объект? И почему тут такая зависимость?»
🔹 Основная проблема магии - она убивает явность кода. Чем больше скрытых механизмов, тем сложнее поддерживать проект и подключать новых разработчиков.
Примеры из практики:
- Использование глобальных хелперов вместо DI.
- Автоматический вызов методов через __call или __get.
- Массовая магия в Laravel (facades, hidden bindings и т.д.).
🛠 Что можно сделать:
1. Минимизировать скрытые механизмы - лучше написать чуть больше явного кода.
2. Использовать контейнер зависимостей, но регистрировать их явно.
3. Документировать «точки входа» и договориться в команде, где магия допустима, а где нет.
Когда код становится предсказуемым, ты меньше тратишь времени на дебаг, быстрее понимаешь чужие изменения и увереннее двигаешься вперёд.
А как у вас в проектах? Вы за явный код или любите, когда всё работает «само»?
👉 @php_lib
Что я имею в виду? Это когда ты открываешь проект, а там сервисы создаются «сами собой», данные в объект попадают неизвестно откуда, а половина зависимостей подтягивается где-то «под капотом».
Вроде удобно - меньше кода писать. Но вот через пару месяцев ты сам же сидишь и думаешь: «А откуда вообще берётся этот объект? И почему тут такая зависимость?»
🔹 Основная проблема магии - она убивает явность кода. Чем больше скрытых механизмов, тем сложнее поддерживать проект и подключать новых разработчиков.
Примеры из практики:
- Использование глобальных хелперов вместо DI.
- Автоматический вызов методов через __call или __get.
- Массовая магия в Laravel (facades, hidden bindings и т.д.).
🛠 Что можно сделать:
1. Минимизировать скрытые механизмы - лучше написать чуть больше явного кода.
2. Использовать контейнер зависимостей, но регистрировать их явно.
3. Документировать «точки входа» и договориться в команде, где магия допустима, а где нет.
Когда код становится предсказуемым, ты меньше тратишь времени на дебаг, быстрее понимаешь чужие изменения и увереннее двигаешься вперёд.
А как у вас в проектах? Вы за явный код или любите, когда всё работает «само»?
👉 @php_lib
👍9❤1
💡Знал ли вы, что…
Метод Number::abbreviate в Laravel преобразует сложные числа в удобочитаемый формат:
👉 @php_lib
Метод Number::abbreviate в Laravel преобразует сложные числа в удобочитаемый формат:
👉 @php_lib
👍11❤1
💡Совет по Laravel
Определение языка пользователя
Laravel использует компонент HttpFoundation из Symfony, который предоставляет полезные возможности. Если вы работаете с локализацией и нужно определить предпочитаемый язык пользователя, просто вызовите метод getPreferredLanguage 🚀
👉 @php_lib
Определение языка пользователя
Laravel использует компонент HttpFoundation из Symfony, который предоставляет полезные возможности. Если вы работаете с локализацией и нужно определить предпочитаемый язык пользователя, просто вызовите метод getPreferredLanguage 🚀
👉 @php_lib
👍5
🚫 Хватит бороться с монолитом!
Узнайте, как создавать масштабируемые и гибкие приложения на 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
Узнайте, как создавать масштабируемые и гибкие приложения на 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
🚀 Если производительность является приоритетом в вашем проекте, возможно, стоит полностью отключить lazy loading.
Eloquent выбросит огромное исключение, если вы попытаетесь обратиться к связи, которая не была загружена заранее (eager-loaded).
👉 @php_lib
Eloquent выбросит огромное исключение, если вы попытаетесь обратиться к связи, которая не была загружена заранее (eager-loaded).
👉 @php_lib
👍2😁1
🔥 PHP-разработчики, готовы прокачать Laravel до уровня, на который другие тратят годы?
Онлайн курс «Framework Laravel» - ваш шанс за 3 месяца освоить фреймворк, который делает разработку проще, быстрее и интереснее.
Какие преимущества обучения по Laravel:
• Laravel ускоряет разработку за счет элегантного синтаксиса, богатой экосистемы и инструментов Artisan.
• Интуитивный ORM Eloquent упрощает работу с данными и повышает читаемость кода.
• Фреймворк масштабируется от MVP до высоконагруженных систем, имеет встроенные средства оптимизации, легко интегрируется с Vue/React/Angular, поддерживается активным сообществом и подтвержден практикой крупных компаний.
Также приглашаем вас на бесплатный вебинар «Advanced Eloquent Relations в Laravel»
🗓 7 октября, 20:00
На вебинаре:
• Кастомные отношения в Laravel Eloquent — от Post до Comment и Author
• Использование отношений за пределами реляционных БД
• Практика на реальных примерах
Кто придёт первым - освоит секреты продвинутого Laravel и научится создавать отношения там, где другие даже не думают их строить.
Записаться на вебинар: https://vk.cc/cQ0xUP
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Онлайн курс «Framework Laravel» - ваш шанс за 3 месяца освоить фреймворк, который делает разработку проще, быстрее и интереснее.
Какие преимущества обучения по Laravel:
• Laravel ускоряет разработку за счет элегантного синтаксиса, богатой экосистемы и инструментов Artisan.
• Интуитивный ORM Eloquent упрощает работу с данными и повышает читаемость кода.
• Фреймворк масштабируется от MVP до высоконагруженных систем, имеет встроенные средства оптимизации, легко интегрируется с Vue/React/Angular, поддерживается активным сообществом и подтвержден практикой крупных компаний.
Также приглашаем вас на бесплатный вебинар «Advanced Eloquent Relations в Laravel»
🗓 7 октября, 20:00
На вебинаре:
• Кастомные отношения в Laravel Eloquent — от Post до Comment и Author
• Использование отношений за пределами реляционных БД
• Практика на реальных примерах
Кто придёт первым - освоит секреты продвинутого Laravel и научится создавать отношения там, где другие даже не думают их строить.
Записаться на вебинар: https://vk.cc/cQ0xUP
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Совет по Laravel💡
Знаете ли вы .... tap() = Tweak and Return 🪄
Да, в Laravel метод tap() позволяет изменить объект и вернуть его обратно — идеально для чистого и читаемого кода.
👉 @php_lib
Знаете ли вы .... tap() = Tweak and Return 🪄
Да, в Laravel метод tap() позволяет изменить объект и вернуть его обратно — идеально для чистого и читаемого кода.
👉 @php_lib
👍9
Совет по Laravel💡
Если вы хотите автоматически удалять старые записи, используйте трейт Prunable.
Нет необходимости писать собственные команды.
👉 @php_lib
Если вы хотите автоматически удалять старые записи, используйте трейт Prunable.
Нет необходимости писать собственные команды.
👉 @php_lib
👍6🤔2😁1
This media is not supported in your browser
VIEW IN TELEGRAM
🐘 Ваш PHP-код «ест» слишком много ресурсов и работает медленнее, чем хотелось бы? Это частая проблема даже у опытных разработчиков.
Алгоритмы не всегда решают задачу. Чтобы ускорить код, нужно понимать, как работает память и что происходит «под капотом» PHP. Именно это и будет темой нашего открытого урока курса.
🚀 Вместе мы разберём как PHP хранит данные, и освоим простые приёмы оптимизации, которые реально сокращают время выполнения кода и экономят ресурсы.
🔴 Присоединяйтесь к открытому вебинару 15 октября в 20:00 (МСК): https://vk.cc/cQm0EF
Урок проходит в преддверии старта курса «PHP Developer. Professional».
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Алгоритмы не всегда решают задачу. Чтобы ускорить код, нужно понимать, как работает память и что происходит «под капотом» PHP. Именно это и будет темой нашего открытого урока курса.
🚀 Вместе мы разберём как PHP хранит данные, и освоим простые приёмы оптимизации, которые реально сокращают время выполнения кода и экономят ресурсы.
🔴 Присоединяйтесь к открытому вебинару 15 октября в 20:00 (МСК): https://vk.cc/cQm0EF
Урок проходит в преддверии старта курса «PHP Developer. Professional».
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Сегодня хочу поговорить о теме, которая часто мешает PHP-разработчикам писать красивый и устойчивый код - магические методы.
Да, те самые
Когда код полагается на магию, отладка превращается в игру «угадай, откуда взялось это значение». IDE не подсказывает типы, автодополнение не работает, а дебаггер видит лишь хаос. Я не говорю, что магические методы нужно запретить. Они бывают полезны, например, в паттерне Proxy или для ленивой загрузки. Но использовать их стоит осознанно, с понятным контрактом.
👉 Советы от меня:
- Если хочешь гибкости — лучше внедри
- Если используешь
- И главное - не прячь логику под магию. Пусть код говорит сам за себя.
👉 @php_lib
Да, те самые
__get
, __set
, __call
, __toString
и компания. Они вроде бы удобные: можно ловко обращаться к несуществующим свойствам, вызывать методы, которых нет, и всё работает. Но вот вопрос — а как это тестировать и поддерживать?Когда код полагается на магию, отладка превращается в игру «угадай, откуда взялось это значение». IDE не подсказывает типы, автодополнение не работает, а дебаггер видит лишь хаос. Я не говорю, что магические методы нужно запретить. Они бывают полезны, например, в паттерне Proxy или для ленивой загрузки. Но использовать их стоит осознанно, с понятным контрактом.
👉 Советы от меня:
- Если хочешь гибкости — лучше внедри
__call
через интерфейс или трейт с чёткой логикой.- Если используешь
__get
/
__set
— документируй все «виртуальные» свойства в phpdoc.- И главное - не прячь логику под магию. Пусть код говорит сам за себя.
👉 @php_lib
👍7
Оптимизация скорости работы PHP кода 🏎️
Сегодня я покажу вам несколько простых, но эффективных способов ускорить выполнение PHP-скриптов. Оптимизация кода – важная часть работы разработчика, ведь никто не любит медленные сайты. 🚀
🔥 1. Избегайте лишних запросов к БД
Частая ошибка – несколько одинаковых запросов к базе данных в одном запросе. Используйте кэширование (
🔥 2. Используйте
Функция
🔥 3. Не злоупотребляйте
Если у вас массив с десятками тысяч элементов, попробуйте
🔥 4. Подключайте файлы правильно
Разница между
🔥 5. Включите OPCache
OPCache кэширует байт-код PHP и ускоряет его выполнение в разы. Включите его в
🔥 6. Используйте
Функция
👉 @php_lib
Сегодня я покажу вам несколько простых, но эффективных способов ускорить выполнение PHP-скриптов. Оптимизация кода – важная часть работы разработчика, ведь никто не любит медленные сайты. 🚀
🔥 1. Избегайте лишних запросов к БД
Частая ошибка – несколько одинаковых запросов к базе данных в одном запросе. Используйте кэширование (
Redis
, Memcached
), а если данные редко меняются – сохраняйте их в файл. 🔥 2. Используйте
isset()
вместо array_key_exists()
Функция
isset()
работает быстрее, чем array_key_exists()
, потому что она не только проверяет наличие ключа, но и сразу его значение.
// Медленный вариант
if (array_key_exists('key', $array)) { }
// Быстрый вариант
if (isset($array['key'])) { }
🔥 3. Не злоупотребляйте
foreach
при больших объемах данных Если у вас массив с десятками тысяч элементов, попробуйте
array_map()
или array_walk()
– они работают быстрее за счет встроенной оптимизации в C. 🔥 4. Подключайте файлы правильно
Разница между
require
, include
, require_once
и include_once
может сильно повлиять на производительность. require_once
проверяет, был ли уже подключен файл, что замедляет выполнение. Если точно знаете, что файл не дублируется – используйте require
. 🔥 5. Включите OPCache
OPCache кэширует байт-код PHP и ускоряет его выполнение в разы. Включите его в
php.ini
:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=1
🔥 6. Используйте
json_encode()
вместо serialize()
Функция
json_encode()
работает быстрее, чем serialize()
, и при этом генерирует более компактные данные.
$data = ['name' => 'John', 'age' => 25];
// Медленный вариант
$serialized = serialize($data);
// Быстрый вариант
$json = json_encode($data);
👉 @php_lib
👍5🙈1
🔥 От PHP-разработчика к эксперту по Битрикс24! Старт набора в группу курса “Разработчик Битрикс24" в OTUS. Открыт прием заявок
Разработка на Битрикс24 — востребованная компетенция для автоматизации бизнес-процессов. Отправьте заявку на обучение и получите спеццену при поступлении в группу.
Вы научитесь:
✅ Разворачивать Битрикс24 на собственном сервере
✅ Создавать компоненты, модули и REST-приложения
✅ Автоматизировать процессы с помощью бизнес-процессов
✅ Интегрировать Битрикс24 с внешними системами
🎓 Подробности уточняйте у менеджера
🚀 Не упустите шанс стать экспертом по Битрикс24 и повысить свою квалификацию!
👉 Оставить заявку https://vk.cc/cQqXs9
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Разработка на Битрикс24 — востребованная компетенция для автоматизации бизнес-процессов. Отправьте заявку на обучение и получите спеццену при поступлении в группу.
Вы научитесь:
✅ Разворачивать Битрикс24 на собственном сервере
✅ Создавать компоненты, модули и REST-приложения
✅ Автоматизировать процессы с помощью бизнес-процессов
✅ Интегрировать Битрикс24 с внешними системами
🎓 Подробности уточняйте у менеджера
🚀 Не упустите шанс стать экспертом по Битрикс24 и повысить свою квалификацию!
👉 Оставить заявку https://vk.cc/cQqXs9
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
💩3