PHP Portal | Программирование
Відкрити в Telegram
Присоединяйтесь к нашему каналу и погрузитесь в мир для PHP-разработчика Связь: @devmangx
Показати більше4 824
Підписники
-424 години
-147 днів
-7730 день
Архів дописів
🌐 WAICORE — хостинг, за который не надо переживать
Устали от лагов, сложных панелей и переплат? Переходите на VPS с AMD Ryzen 9 — быстро, просто, без нервов.
💬 Почему клиенты выбирают нас:
— Цена начинается от 2€
— Скорость канала до 10 Гбит/с
— Поддержка 24/7 — отвечаем быстро и без шаблонов
☀Приятный бонус: Бесплатный VPN — расширение для браузера в подарок каждому нашему юзеру
VPN | Расширение для браузера
📍 Локации: Германия (Франкфурт), Москва, Нидерланды (уже скоро) — стабильный пинг, DDoS-защита.
🔥 Успейте сегодня
⤵ Выбрать сервер | 💬 Наш канал
Разработчики на PHP, вы знали о Ticks в PHP?
Вы можете написать небольшой скрипт, чтобы остановить долго выполняющийся код по тайм-ауту — без использования pcntl!
Подходит не везде, но отлично заходит в циклах, плагинах или в песочнице.
https://gist.github.com/MrPunyapal/b3909ab20872bd8e1d39bcaf03f52351
👉 @PHPgx
+1
Прекрати использовать массивы PHP для обработки данных
Создавай свои DTO — классы со свойствами
или используй
spatie/laravel-data
Также не забудь про неизменяемость. Убедись, что твои DTO являются immutable (записываются один раз), чтобы можно было быть уверенным, что объект не был где-либо изменён.
Ключевое слово readonly тебе в этом поможет
👉 @PHPgxRepost from IT Portal
Чуть не пропустил, вчера PHP отметил своё 30-летие
8 июня 1995 года, программист родом из Гренландии, Расмус Лердорф, публикует в usenet анонс набора CGI-скриптов, который он назвал PHP Tools
Сегодня PHP обеспечивает работу 74,2% серверной части веба. Далее идут: Ruby — 6,2%, Java — 5,2%, ASP.NET — 5,1% и JavaScript на стороне сервера — 4,5% (по данным W3Techs)
С днём рождения, PHP! 😇
@IT_Portal
Нашёл пакет, о котором раньше не знал:
LarsWiegers/laravel-maps
https://github.com/LarsWiegers/laravel-maps
Этот пакет позволяет легко использовать leaflet.js или Google Maps для создания карты в Laravel-проекте
А ты используешь какие-нибудь альтернативы для отображения карты объектов на сайте на Laravel?
👉 @PHPgx
Совет по Laravel
Нужно сгенерировать защищённые ссылки для скачивания, которые истекают через определённое время?
Используйте
temporaryUrl(), чтобы создать временный доступ к приватным файлам.
Отлично подходит для платного контента или конфиденциальных документов.
Ссылка на документацию: https://laravel.com/docs/12.x/filesystem#temporary-urls
👉 @PHPgxRepost from Техночат
Разыгрываем лучшие гаджеты года: iPhone 16 Pro Max на 256 ГБ, 15-дюймовый MacBook Air 16/256 ГБ и PlayStation 5 Pro!
Чтобы их получить, достаточно подписаться на:
• наш канал «Техночат»
• И на канал «Больше, чем экономика»
Нажимаете после этого на кнопку «Участвовать» и ждёте 2 июля — в этот день в 20:00 по московскому времени рандомайзер выберет трёх победителей. Первый получит айфон, второй — макбук, а третий — PlayStation.
Призы бесплатно вышлем в ближайший к вам пункт выдачи СДЭК, поэтому уточните, есть ли он в вашей стране.
Phptop — это простой профилировщик ресурсов PHP, безопасный для использования на продуктивных сайтах. Помогает отслеживать использование CPU и памяти на каждый запрос.
Отличный инструмент для разработчиков, стремящихся оптимизировать свои PHP-приложения.
https://github.com/bearstech/phptop
👉 @PHPgx
+1
Совет по PHP
Функция
parse_url() вернёт части URL, например, имя домена, если указать PHP_URL_HOST.
Документация: https://php.net/manual/ru/function.parse-url.php
👉 @PHPgx👨💻 Эти каналы реально помогают в изучении программирования и IT
Не веришь? Проверь сам:
👩💻 Easy GitHub — лучшие репозитории с гитхаба для практики и освоения IT.
🌐 Easy WebDev — всё про Frontend, Backend и сопутствующие технологии.
🖥 Easy Python — лёгкое изучение самого универсального языка в мире.
🔠 Easy InfoSec — ИБ, хакинг, OSINT, анонимность, пентест и многое другое.
🖥 Easy Coder — а здесь вообще про всё, что нужно знать для работы в IT.
🖱 Просто выбери нужное и получай топовые материалы каждый день!
+2
Разработчики, возьмите на заметку: чему нас могут научить хакеры при ревью PHP-кода
Вот на что часто обращают внимание хакеры при ревью PHP-кода —
$this->db->query
Этот простой паттерн помогает находить уязвимости типа SQL-инъекция буквально за минуты. Такие конструкции часто встречаются в небезопасных реализациях, особенно без параметризации запросов
Попробуйте сами: поищите это выражение в open-source проектах на GitHub — многие уязвимости видны сразу
Безопасный код — это ваш лучший контрприём
👉 @PHPgxНашёл годный пакет Laravel
gecche/laravel-multidomain: для использования Laravel-приложения в многодоменной конфигурации
https://github.com/gecche/laravel-multidomain
Этот пакет предоставляет очень простой способ получить отдельный
.env-файл, отдельный путь к хранилищу и отдельную базу данных для каждого такого клиента.
👉 @PHPgxСовет по Laravel.
Защитите ваше приложение от спамеров при регистрации.
Побочный эффект: если вы отправляете электронные письма при регистрации, это поможет избежать переполнения очереди email-уведомлений и лишних расходов на услуги почтового провайдера.
После достижения лимита пользователи/боты будут получать ошибку "429 Too Many Requests"
👉 @PHPgx
Ускорьте работу Laravel: Мой запрос стал выполняться на 30 секунд быстрее
Я заменил
whereNotIn() на leftJoin()
— и запрос стал выполняться на 30 секунд быстрее.
Таблица, по которой выполнялся поиск, содержала более 800 тысяч записей.
Вот 10 быстрых способов оптимизировать запросы в Laravel:
🔹Используйте leftJoin() вместо whereNotIn()
— быстрее и эффективнее.
🔹Замените whereIn() на whereExists()
— экономит память.
🔹Выбирайте только нужные столбцы через select()
— избегайте User::all().
🔹Обрабатывайте большие объемы данных по частям через chunk()
— не загружайте всё сразу.
🔹Используйте pluck() вместо get()
— быстрее при выборке одного столбца.
🔹Проверяйте наличие записей через exists() вместо count() > 0.
🔹Используйте upsert() вместо updateOrInsert()
— меньше запросов.
🔹Пагинируйте результаты через paginate()
— не загружайте все данные сразу.
🔹Кэшируйте часто используемые запросы через cache()
— снижает нагрузку на базу данных.
🔹Избегайте жадной загрузки в циклах, используйте load()
— эффективная загрузка связей.
Каждая миллисекунда имеет значение.
Небольшие изменения = значительный прирост производительности ✌️
👉 @PHPgx👩💻 Всем программистам посвящается!
Вот 17 авторских обучающих IT каналов по самым востребованным областям программирования:
Выбирай своё направление:
👩💻 Python — t.me/python_ready
🖥 Базы Данных & SQL — t.me/sql_ready
🤔 Хакинг & ИБ — t.me/hacking_ready
👩💻 Linux — t.me/linux_ready
👩💻 Bash & Shell — t.me/bash_ready
👩💻 Java — t.me/java_ready
👩💻 Всё IT — t.me/it_ready
👩💻 C/C++ — https://t.me/cpp_ready
👩💻 C# & Unity — t.me/csharp_ready
🖼️ DevOps — t.me/devops_ready
📱 GitHub — t.me/github_ready
👩💻 Нейросети — t.me/neuro_ready
👩💻 Frontend — t.me/frontend_ready
📱 JavaScript — t.me/javascript_ready
👩💻 Backend — t.me/backend_ready
📖 IT Книги — t.me/books_ready
🖥 Design — t.me/design_ready
📌 Гайды, шпаргалки, задачи, ресурсы и фишки для каждого языка программирования!
Совет по Laravel
Знали ли вы, что значения по умолчанию для столбцов базы данных можно задавать не только на уровне базы данных в миграциях, но и на уровне Eloquent-модели с помощью свойства
$attributes?
Ссылка на документацию: https://laravel.com/docs/12.x/eloquent#default-attribute-values
👉 @PHPgxЗадумывались, как работает загрузка файлов в PHP? 🤔
Когда пользователь отправляет файл, PHP предоставляет специальный массив
$_FILES с именем, размером, типом и временным местоположением файла.
👉 @PHPgxFrankenPHP теперь официально поддерживается Фондом PHP.
Репозиторий проекта будет перенесён в организацию PHP на GitHub
👉 @PHPgx
🥳 Судя по результатам голосования, похоже, в PHP 8.5 появится оператор Pipe.
https://wiki.php.net/rfc/pipe-operator-v3
#php
👉 @PHPgx
Новое в Symfony 7.3: компонент
ObjectMapper
Во многих Symfony-приложениях часто используют DTO-объекты для переноса данных между слоями. Например, вы можете создать DTO на основе Doctrine-сущности, изменить его с помощью Symfony Form, а затем снова замапить обновлённые данные в сущность.
Код для маппинга DTO обратно в сущность часто выглядит так:
$user = new User();
$user->name = $dto->name;
$user->email = $dto->email;
$user->roles = ['ROLE_USER'];
// …
Это утомительно и подвержено ошибкам. Поэтому в Symfony 7.3 введён новый компонент ObjectMapper для переноса данных между объектами. С его помощью предыдущий пример становится намного проще:
// при создании нового объекта на основе другого
$user = $mapper->map($dto, User::class);
// при обновлении существующего объекта другим объектом
$mapper->map($dto, $user);
Подробнее:
https://symfony.com/blog/new-in-symfony-7-3-objectmapper-component
👉 @PHPgx