Удаление дублирующихся символов в строках
Если вам нужно удалить дубликаты строк в 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
');
👍4❤2🔥1
💡/Совет по PHP/Laravel
Вместо того чтобы выполнять цикл
@phpshka
Вместо того чтобы выполнять цикл
foreach
по массиву для поиска значения записи, вы можете использовать метод Laravel Collection contains()
.@phpshka
😁6👍4👎2❤1🤮1
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.
Разработчикам рекомендуется обновить свой код, чтобы использовать пустую строку для параметра экранирования и избежать предупреждений о депрекации. В статье приводятся примеры кода с пояснениями, как это сделать.
👍8❤4🔥3
Советы по моделям в 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 позволяет создавать собственные коллекции моделей с дополнительными методами для удобства работы с ними.
👍13❤5🔥2👎1🥱1
Привет, разработчики Laravel 👩💻
Начиная с Laravel v11.18.0, в методе
Пример использования метода
Раньше при использовании метода
Теперь мы можем передать параметр
Это может улучшить пользовательский опыт для некоторых приложений.
#laravel #php
Начиная с Laravel v11.18.0, в методе
Str::limit()
появился новый параметр preserveWords
.Пример использования метода
limit()
— отображение предварительных версий текстового контента, таких как резюме или отрывки блог-постов.Раньше при использовании метода
limit
он мог разрывать слова посередине.Теперь мы можем передать параметр
preserveWords
как true
, и Laravel умно применит ограничение так, чтобы последнее слово было полным.Это может улучшить пользовательский опыт для некоторых приложений.
#laravel #php
👍16❤7🥰1
Совет по Laravel 💡
Вам нужно использовать одни и те же правила проверки пароля для разных маршрутов пользователей (например, при регистрации и создании панели администратора)?
Обратите внимание на функцию
Ознакомьтесь со всеми правилами в документации: https://github.com/illuminate/validation/blob/master/Rules/Password.php
Вам нужно использовать одни и те же правила проверки пароля для разных маршрутов пользователей (например, при регистрации и создании панели администратора)?
Обратите внимание на функцию
Password::defaults()
. Ознакомьтесь со всеми правилами в документации: https://github.com/illuminate/validation/blob/master/Rules/Password.php
❤8👍2🔥1
Вот 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…
👍5🔥3❤1🥰1
Совет по Laravel💡
Хотите быстро вывести SQL-запросы, выполненные во время вашего запроса?
И не хотите устанавливать Debugbar, Telescope и т.п.?
Используйте
@phpshka
Хотите быстро вывести SQL-запросы, выполненные во время вашего запроса?
И не хотите устанавливать Debugbar, Telescope и т.п.?
Используйте
DB::listen()
с toRawSql()
!@phpshka
👍16🔥4❤3
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
❤15👍5🔥2
⚡️ 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
❤6🔥1
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
👍8❤5😍5
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
👍14❤4🔥4👎1