TGViewer
Channel Public Channel
PHP Portal | Программирование

PHP Portal | Программирование

@phpgx

Присоединяйтесь к нашему каналу и погрузитесь в мир для PHP-разработчика

Связь: @devmangx
Subscribers
4.64K
Photos
426
Videos
20
Links
212

Showing posts older than #424 · Back to latest

Older Posts 17 shown
Post #423 2.68K

Forwarded 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
  • ❤ 29
  • 🎉 21
  • 🔥 5
  • 👍 2
Post #422 2.71K
Нашёл пакет, о котором раньше не знал:

LarsWiegers/laravel-maps
https://github.com/LarsWiegers/laravel-maps

Этот пакет позволяет легко использовать leaflet.js или Google Maps для создания карты в Laravel-проекте

А ты используешь какие-нибудь альтернативы для отображения карты объектов на сайте на Laravel?

👉 @PHPgx
  • ❤ 8
  • 👍 3
  • 👀 1
Post #421 2.78K
Совет по Laravel

Нужно сгенерировать защищённые ссылки для скачивания, которые истекают через определённое время?

Используйте temporaryUrl(), чтобы создать временный доступ к приватным файлам.

Отлично подходит для платного контента или конфиденциальных документов.

Ссылка на документацию: https://laravel.com/docs/12.x/filesystem#temporary-urls

👉 @PHPgx
  • ❤ 14
  • 👍 11
Post #419 2.36K
Phptop — это простой профилировщик ресурсов PHP, безопасный для использования на продуктивных сайтах. Помогает отслеживать использование CPU и памяти на каждый запрос.

Отличный инструмент для разработчиков, стремящихся оптимизировать свои PHP-приложения.

https://github.com/bearstech/phptop

👉 @PHPgx
  • ❤ 10
  • 👍 4
  • 👎 1
Post #413 3.07K
Разработчики, возьмите на заметку: чему нас могут научить хакеры при ревью PHP-кода

Вот на что часто обращают внимание хакеры при ревью PHP-кода — $this->db->query

Этот простой паттерн помогает находить уязвимости типа SQL-инъекция буквально за минуты. Такие конструкции часто встречаются в небезопасных реализациях, особенно без параметризации запросов

Попробуйте сами: поищите это выражение в open-source проектах на GitHub — многие уязвимости видны сразу

Безопасный код — это ваш лучший контрприём

👉 @PHPgx
  • ❤ 8
  • 👍 4
Post #412 2.21K
Нашёл годный пакет Laravel

gecche/laravel-multidomain: для использования Laravel-приложения в многодоменной конфигурации
https://github.com/gecche/laravel-multidomain

Этот пакет предоставляет очень простой способ получить отдельный .env-файл, отдельный путь к хранилищу и отдельную базу данных для каждого такого клиента.

👉 @PHPgx
  • 👍 9
  • ❤ 3
Post #411 2.66K
Совет по Laravel.

Защитите ваше приложение от спамеров при регистрации.

Побочный эффект: если вы отправляете электронные письма при регистрации, это поможет избежать переполнения очереди email-уведомлений и лишних расходов на услуги почтового провайдера.

После достижения лимита пользователи/боты будут получать ошибку "429 Too Many Requests"

👉 @PHPgx
  • 👍 11
  • ❤ 4
Post #410 3.43K
Ускорьте работу 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
  • 👍 30
  • 🤔 4
  • ❤ 2
  • 🔥 2
  • 👎 1
Post #408 2.33K
Совет по Laravel

Знали ли вы, что значения по умолчанию для столбцов базы данных можно задавать не только на уровне базы данных в миграциях, но и на уровне Eloquent-модели с помощью свойства $attributes?

Ссылка на документацию: https://laravel.com/docs/12.x/eloquent#default-attribute-values

👉 @PHPgx
  • ❤ 12
  • 👍 5
Post #407 2.47K
Задумывались, как работает загрузка файлов в PHP? 🤔

Когда пользователь отправляет файл, PHP предоставляет специальный массив $_FILES с именем, размером, типом и временным местоположением файла.

👉 @PHPgx
  • 👍 8
  • 👀 2
  • 👎 1
  • 🤯 1
  • 🌭 1
Post #404 2.59K
Новое в 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
  • ❤ 6
  • 👍 6
Post #403 2.3K
Composer Package Executor

Это CLI-инструмент, который позволяет выполнять любую команду из любого Composer-пакета, даже если этот пакет не установлен в вашем проекте.

По сути, это как npx, но для Composer

https://github.com/imliam/cpx

👉 @PHPgx
  • ❤ 12
  • 👍 4
Post #402 2.81K
Вы можете просто вложить блок match в PHP, если вам нужна немного большая точность для группы совпадений

Это аккуратно, чисто и очень читаемо.

👉 @PHPgx
  • 👍 17
  • ❤ 8
Post #401 2.69K
Совет по Laravel

Нужно жадно загрузить связи, но при этом выбрать только определённые столбцы?

Используйте метод with() с указанием нужных столбцов, чтобы сократить использование памяти и размер запроса при работе с большими объёмами данных.

Ссылка на документацию: https://laravel.com/docs/12.x/eloquent-relationships#eager-loading-specific-columns

👉 @PHPgx
  • 👍 10
  • ❤ 3
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →