Laravel 10.19 publié avec de nouvelles fonctionnalités et des correctifs
Laravel 10.19 est maintenant disponible avec de nouvelles fonctionnalités et des correctifs. Laravel v10.19 avec une méthode de pourcentage de collecte, une résolution de découverte d'événements personnalisée, un délai d'écoute de file d'attente dynamique, etc.
Josh Bonnick a contribué une méthode wordWrap à l'API Laravel String, qui divise les chaînes dans une chaîne en utilisant une limite de caractères. Cette méthode est un wrapper pour la fonction wordwrap de PHP :
use Illuminate\Support\Str;
$text = "A very long woooooooooooord."
// Str
Str::wordWrap(string: $text, characters: 8);
/*
A very
long
wooooooo
ooooord.
*/
// Stringable
str($text)->wordWrap(string: $text, characters: 8);
Wendell Adriel a fourni une méthode pourcentage() aux collections qui vous permet de calculer un pourcentage basé sur une logique personnalisée à l'aide d'un test de vérité :
$collection = new $collection([
['name' => 'Taylor', 'foo' => 'foo'],
['name' => 'Nuno', 'foo' => 'bar'],
['name' => 'Dries', 'foo' => 'bar'],
['name' => 'Jess', 'foo' => 'baz'],
]);
$collection->percentage(fn ($value) => $value['foo'] === 'foo'); // 25.00
$collection->percentage(fn ($value) => $value['foo'] === 'bar'); // 50.00
$collection->percentage(fn ($value) => $value['foo'] === 'baz'); // 25.00
$collection->percentage(fn ($value) => $value['foo'] === 'test'); // 0.00
@bastien-phi a contribué à la possibilité de personnaliser la résolution de classe pour la découverte d'événements :
Ce PR ajoute la possibilité de personnaliser la façon dont la traduction est effectuée et déverrouille la découverte d'événements dans de telles structures DDD.
Voici un exemple de rappel personnalisé dans les tests de Pull Request #48031 , qui illustre comment cela peut être utilisé :
use Illuminate\Foundation\Events\DiscoverEvents;
DiscoverEvents::guessClassNamesUsing(function (SplFileInfo $file, $basePath) {
return Str::of($file->getRealPath())
->after($basePath.DIRECTORY_SEPARATOR)
->before('.php')
->replace(DIRECTORY_SEPARATOR, '\\')
->ucfirst()
->prepend('Illuminate\\')
->toString();
});
@CalebW a contribué à la prise en charge des écouteurs pour définir une méthode withDelay() qui peut déterminer le délai d'écoute de la file d'attente :
class Listener implements ShouldQueue
{
public function __invoke(Event $event): void
{
// ...
}
public function withDelay(Event $event): int
{
return $event->fooBar
? <short_delay>
: <long_delay>;
}
}
Choraimy Kroonstuiver a contribué à une mise à jour de PHPDoc pour aider les outils d'analyse statique à comprendre les types de retour génériques de l' assistant rescue() . Il n'y a pas d'exemples de code à voir ici, mais le Docblock mis à jour ressemble à ceci après cette mise à jour :
/**
* Catch a potential exception and return a default value.
*
* @template TRescueValue
* @template TRescueFallback
*
* @param callable(): TRescueValue $callback
* @param (callable(\Throwable): TRescueFallback)|TRescueFallback $rescue
* @param bool|callable $report
* @return TRescueValue|TRescueFallback
*/
function rescue(callable $callback, $rescue = null, $report = true)
{
// ...
}
// Examples:
assertType('int|null', rescue(fn () => 123));
assertType('int', rescue(fn () => 123, 345));
assertType('int', rescue(fn () => 123, fn () => 345));
Vous pouvez en savoir plus sur les génériques par exemples sur le blog PHPStan.
Jordan Welch a contribué à la possibilité de transmettre un entier à createMany() et createManyQuietly() sur les fabriques de modèles pour créer ce nombre de modèles :
// Before:
$users = User::factory()->createMany([[], [], []]);
// After:
$users = User::factory()->createMany(3);
$this->assertCount(3, $users);
$this->assertInstanceOf(Eloquent\Collection::class, $users);
Vous pouvez voir la liste complète des nouvelles fonctionnalités et mises à jour ci-dessous et le diff entre 10.18.0 et 10.19.0 sur GitHub. Les notes de version suivantes proviennent directement du journal des modifications :
Source : https://laravel-news.com
#laravel #php