Цього тижня команда Laravel випустила версію v11.39, до якої додано атрибут класу фабрики моделей, можливість запобігти руйнівним відкатам, параметри повторних спроб і затримки для PhpRedis та багато іншого.
Чриз Артер додав атрибут UseFactory
для визначення, яку фабрику слід використовувати для моделі. Це зручно для реєстрації фабрики для моделей поза звичайним простором імен App\Models
:
namespace App\SomeFeatureDomain\Models\Comment;
use Database\Factories\CommentFactory;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Attributes\UseFactory;
#[UseFactory(CommentFactory::class)]
class Comment extends Model
{
use HasFactory;
// ...
}
Ще один спосіб перевизначити фабричну конвенцію — це визначити метод newFactory()
, який матиме вищий пріоритет над атрибутом UseFactory()
, якщо ви обидва визначите:
use Database\Factories\CommentFactory;
/**
* Створити новий екземпляр фабрики для моделі.
*/
protected static function newFactory()
{
return CommentFactory::new();
}
Згідно з описом запиту на злиття, пріоритет вирішення фабрики такий:
$factory
, якщо визначенаДеталі про те, як завантажуються фабрики, можна знайти в документації про Конвенції виявлення моделей і фабрик.
Савіо Резенде додав опції throw
і report
в драйвер файлової системи. Якщо обидва параметри встановлені в true
, це означає, що диск не викидатиме винятків і звітуватиме про помилки:
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
'throw' => false, // Приховати винятки
'report' => true, // Увімкнути логування помилок
],
],
Деталі про роботу цих опцій можна знайти в Запиті на злиття #54212.
Райнер Бендіг додав можливість запобігати руйнівним операціям RollbackCommand
, якщо додаток настроєний для заборони руйнівних команд з:
DB::prohibitDestructiveCommands(true);
Селчук Чукур додав метод addPath()
для додавання директорії до завантажувача перекладів:
Раніше було неможливо додати нову директорію без простору імен для завантажувача перекладів. Цей метод дозволяє завантажувати рядки перекладів, включаючи нову директорію без простору імен.
Деталі можна знайти в Запиті на злиття #54277.
Петро Левтонов додав параметри конфігурації для затримки та повторної спроби у з'єднанні phpredis:
Цей запит на злиття додає підтримку конфігурацій ~phpredis backoff/retry~.
Ці налаштування є критично важливими для високопродуктивних додатків. Наразі я змушений переписувати драйвер у багатьох сервісах, щоб скористатися цими конфігураціями. Було б чудово, якби ви це об'єднали, щоб підтримувати ці конфігурації з коробки.
Я підтвердив з утримувачем phpredis, що ці налаштування наразі доступні лише для звичайного класу Redis, а не для RedisCluster, тому я їх не додав до налаштувань кластера.
Для довідки, у розділі PhpRedis документації Laravel наведені ці нові опції.
Повний список нових функцій та оновлень дивіться нижче та порівняйте зміни між 11.38.0 і 11.39.0 на GitHub. Наступні примітки до випуску взято з змінної документації:
ValidatedInput
на InteractsWithData
trait від @stevebauman у https://github.com/laravel/framework/pull/54208Email
від @SanderMuller у https://github.com/laravel/framework/pull/54202optimize:clear
та optimize
від @cosmastech у https://github.com/laravel/framework/pull/54197UseFactory
від @cosmastech у https://github.com/laravel/framework/pull/54215Rule::email()
від @SanderMuller у https://github.com/laravel/framework/pull/54226CliDumperTest::testArray
і CliDumperTest::testObject
від @AhmedAlaa4611 у https://github.com/laravel/framework/pull/54222BladeComponentTagCompilerTest
під Illuminate\Tests\View\Blade
від @AhmedAlaa4611 у https://github.com/laravel/framework/pull/54233addPath()
Дозволити додавання нового шляху для завантажувача перекладів від @selcukcukur у https://github.com/laravel/framework/pull/54277