Удаление дублирующихся символов в строках
Если вам нужно удалить дубликаты строк в Laravel и PHP-приложениях, в Laravel v11.20 добавлен новый метод deduplicate в String helpers, который позволяет быстро и легко удалять дубликаты символов.
По умолчанию символом замены в методе deduplicate() является пробел, что также может быть использовано для помощника squish(), представленного в Laravel v9.7.0:
Обратите внимание на лишние пробелы ' ' в начале и в конце при использовании deduplicate(), это сделано специально. Deduplicate используется для замены последовательных экземпляров данного символа на один символ в данной строке. Squish также удаляет другие пробельные символы, такие как новые строки и табуляции:
Если вам нужно удалить дубликаты строк в Laravel и PHP-приложениях, в Laravel v11.20 добавлен новый метод deduplicate в String helpers, который позволяет быстро и легко удалять дубликаты символов.
use Illuminate\Support\{Str,Stringable};
$string = '/usr/local////path/to///desktop';
Str::deduplicate($string, '/');
// «/usr/local/path/to/desktop»
(new Stringable($string))->deduplicate('/')->toString();
// «/usr/local/path/to/desktop»
По умолчанию символом замены в методе deduplicate() является пробел, что также может быть использовано для помощника squish(), представленного в Laravel v9.7.0:
Str::deduplicate(' John Smith Jr. '); // « John Smith Jr. »
Str::squish(' John Smith Jr. '); // «John Smith Jr.»
Обратите внимание на лишние пробелы ' ' в начале и в конце при использовании deduplicate(), это сделано специально. Deduplicate используется для замены последовательных экземпляров данного символа на один символ в данной строке. Squish также удаляет другие пробельные символы, такие как новые строки и табуляции:
// Каждый пример возвращает `laravel php framework`:
Str::squish(' laravel php framework '));
Str::squish(«laravel\t\tphp\n\nframework»);
Str::squish('
laravel
php
framework
');
💡/Совет по PHP/Laravel
Вместо того чтобы выполнять цикл
@phpshka
Вместо того чтобы выполнять цикл
foreach
по массиву для поиска значения записи, вы можете использовать метод Laravel Collection contains()
.@phpshka
CSV и PHP8.4+
Здесь обсуждаются изменения в PHP 8.4, касающиеся обработки CSV-файлов, и их влияние на разработчиков и библиотеку league/csv, которая является популярным инструментом для работы с CSV в PHP.
В новой версии PHP 8.4 будут введены новые функции, такие как асимметричная видимость и хуки для свойств, но также будут изменения в старых функциональностях, в частности, в обработке CSV.
Разработчикам рекомендуется обновить свой код, чтобы использовать пустую строку для параметра экранирования и избежать предупреждений о депрекации. В статье приводятся примеры кода с пояснениями, как это сделать.
Здесь обсуждаются изменения в PHP 8.4, касающиеся обработки CSV-файлов, и их влияние на разработчиков и библиотеку league/csv, которая является популярным инструментом для работы с CSV в PHP.
В новой версии PHP 8.4 будут введены новые функции, такие как асимметричная видимость и хуки для свойств, но также будут изменения в старых функциональностях, в частности, в обработке CSV.
Разработчикам рекомендуется обновить свой код, чтобы использовать пустую строку для параметра экранирования и избежать предупреждений о депрекации. В статье приводятся примеры кода с пояснениями, как это сделать.
Советы по моделям в Laravel
В Laravel есть множество полезных функций, которые могут улучшить опыт разработки, но легко упустить некоторые из них. Вот несколько советов по работе с моделями в Laravel:
✅1. Избегайте проблемы N+1 запросов
N+1 запросы возникают, когда для каждого элемента в коллекции данных выполняется отдельный запрос к базе данных, что замедляет приложение. Чтобы избежать этого, используйте eager loading для подгрузки связанных данных заранее.
✅2. Предотвращение доступа к несуществующим атрибутам
Если вы случайно попытаетесь получить доступ к несуществующему атрибуту модели, Laravel может вернуть null, что может вызвать неожиданные ошибки. Включите функцию, которая будет выбрасывать исключение при попытке доступа к несуществующему полю.
✅3. Защита от молчаливого игнорирования атрибутов
При попытке обновить модель с использованием полей, которые не указаны в списке fillable, Laravel просто проигнорирует эти данные. Включите функцию, которая будет выбрасывать исключение в таких случаях, чтобы избежать ошибок.
✅4. Включение строгого режима
Если хотите активировать сразу все перечисленные выше проверки, используйте строгий режим моделей. Он включает предотвращение ленивой загрузки, доступ к несуществующим атрибутам и молчаливое игнорирование атрибутов.
✅5. Использование UUID вместо автонумерации
Для повышения безопасности можно использовать UUID (уникальные идентификаторы) в качестве первичных ключей или для публичных идентификаторов. Это затрудняет предсказание ID и может защитить приложение от атак.
✅6. Использование кастомных коллекций
Laravel позволяет создавать собственные коллекции моделей с дополнительными методами для удобства работы с ними.
В Laravel есть множество полезных функций, которые могут улучшить опыт разработки, но легко упустить некоторые из них. Вот несколько советов по работе с моделями в Laravel:
✅1. Избегайте проблемы N+1 запросов
N+1 запросы возникают, когда для каждого элемента в коллекции данных выполняется отдельный запрос к базе данных, что замедляет приложение. Чтобы избежать этого, используйте eager loading для подгрузки связанных данных заранее.
✅2. Предотвращение доступа к несуществующим атрибутам
Если вы случайно попытаетесь получить доступ к несуществующему атрибуту модели, Laravel может вернуть null, что может вызвать неожиданные ошибки. Включите функцию, которая будет выбрасывать исключение при попытке доступа к несуществующему полю.
✅3. Защита от молчаливого игнорирования атрибутов
При попытке обновить модель с использованием полей, которые не указаны в списке fillable, Laravel просто проигнорирует эти данные. Включите функцию, которая будет выбрасывать исключение в таких случаях, чтобы избежать ошибок.
✅4. Включение строгого режима
Если хотите активировать сразу все перечисленные выше проверки, используйте строгий режим моделей. Он включает предотвращение ленивой загрузки, доступ к несуществующим атрибутам и молчаливое игнорирование атрибутов.
✅5. Использование UUID вместо автонумерации
Для повышения безопасности можно использовать UUID (уникальные идентификаторы) в качестве первичных ключей или для публичных идентификаторов. Это затрудняет предсказание ID и может защитить приложение от атак.
✅6. Использование кастомных коллекций
Laravel позволяет создавать собственные коллекции моделей с дополнительными методами для удобства работы с ними.
Привет, разработчики Laravel 👩💻
Начиная с Laravel v11.18.0, в методе
Пример использования метода
Раньше при использовании метода
Теперь мы можем передать параметр
Это может улучшить пользовательский опыт для некоторых приложений.
#laravel #php
Начиная с Laravel v11.18.0, в методе
Str::limit()
появился новый параметр preserveWords
.Пример использования метода
limit()
— отображение предварительных версий текстового контента, таких как резюме или отрывки блог-постов.Раньше при использовании метода
limit
он мог разрывать слова посередине.Теперь мы можем передать параметр
preserveWords
как true
, и Laravel умно применит ограничение так, чтобы последнее слово было полным.Это может улучшить пользовательский опыт для некоторых приложений.
#laravel #php
Совет по Laravel 💡
Вам нужно использовать одни и те же правила проверки пароля для разных маршрутов пользователей (например, при регистрации и создании панели администратора)?
Обратите внимание на функцию
Ознакомьтесь со всеми правилами в документации: https://github.com/illuminate/validation/blob/master/Rules/Password.php
Вам нужно использовать одни и те же правила проверки пароля для разных маршрутов пользователей (например, при регистрации и создании панели администратора)?
Обратите внимание на функцию
Password::defaults()
. Ознакомьтесь со всеми правилами в документации: https://github.com/illuminate/validation/blob/master/Rules/Password.php
Вот 50-минутное руководство по атрибутам #PHP 📺
Узнайте, как создавать атрибуты с целью применения правил проверки к свойствам объекта передачи данных
Ознакомьтесь с этим видео здесь 👇 или сохраните в закладках на будущее
https://youtu.be/oSo4xbP6ZYo
@phpshka
Узнайте, как создавать атрибуты с целью применения правил проверки к свойствам объекта передачи данных
Ознакомьтесь с этим видео здесь 👇 или сохраните в закладках на будущее
https://youtu.be/oSo4xbP6ZYo
@phpshka
YouTube
PHP Attributes 50 Minute Tutorial
Dive into PHP attributes as we use them to implement validation rules in a DTO, showcasing a practical and efficient coding approach.
Check out THE FULL COURSE and get the code examples here:
https://www.garyclarke.tech/p/learn-object-oriented-php
🆓 Join…
Check out THE FULL COURSE and get the code examples here:
https://www.garyclarke.tech/p/learn-object-oriented-php
🆓 Join…
Совет по Laravel💡
Хотите быстро вывести SQL-запросы, выполненные во время вашего запроса?
И не хотите устанавливать Debugbar, Telescope и т.п.?
Используйте
@phpshka
Хотите быстро вывести SQL-запросы, выполненные во время вашего запроса?
И не хотите устанавливать Debugbar, Telescope и т.п.?
Используйте
DB::listen()
с toRawSql()
!@phpshka
Media is too big
VIEW IN TELEGRAM
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 Бонус. Нестандартные тело запроса и ответа
источник
@phpishka
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ CipherSweet
Полезная библиотека, которая разработанная компанией Paragon Initiative Enterprises для реализации шифрования на уровне полей с возможностью поиска.
https://github.com/paragonie/ciphersweet
Полезная библиотека, которая разработанная компанией Paragon Initiative Enterprises для реализации шифрования на уровне полей с возможностью поиска.
https://github.com/paragonie/ciphersweet
GitHub
GitHub - paragonie/ciphersweet: Fast, searchable field-level encryption for PHP projects
Fast, searchable field-level encryption for PHP projects - paragonie/ciphersweet
Manticore + Laravel + Scout
Простая интеграция поискового движка Manticore Search с фреймворком Laravel при помощи Laravel Scout и неофициального драйвера manticore-scout-engine.
Простая интеграция поискового движка Manticore Search с фреймворком Laravel при помощи Laravel Scout и неофициального драйвера manticore-scout-engine.
Хабр
Manticore + Laravel + Scout
Простая интеграция поискового движка Manticore Search с фреймворком Laravel при помощи Laravel Scout и неофициального драйвера manticore-scout-engine . Не смотря на то, что драйвер неофициальный, он...
https://laralibrary.com/top-packages-launched/2024
@phpshka
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Мощный фреймворк для создания консольных приложений на PHP с псевдографическим пользовательским интерфейсом.
https://github.com/php-tui/php-tui
@phpshka
Please open Telegram to view this post
VIEW IN TELEGRAM