Laravel 10.19 publié avec de nouvelles fonctionnalités et des correctifs

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.

Méthode de chaîne de retour à la ligne

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);

Ajouter une méthode de pourcentage aux collections

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

Possibilité de personnaliser la résolution de classe dans la découverte d'événements

@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();
});

Spécifier dynamiquement le délai d'écoute

@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>;
    }
}

Ajouter des types de retour dynamiques à l'assistant de secours

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.

Ajouter un argument count à createMany et createManyQuietly

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);

Notes de version

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 :

v10.19.0

  • [10.x] Correction d'une faute de frappe dans la mise à jour HasUniqueIds par @iamcarlos94 dans https://github.com/laravel/framework/pull/47994
  • [10.x] Gérez gracieusement la notation scientifique par @timacdonald dans https://github.com/laravel/framework/pull/48002
  • [10.x] Correction des docblocks pour throw_if et throw_unless par @AbdelElrafa dans https://github.com/laravel/framework/pull/48003
  • [10.x] Ajouter wordWrap à Str par @joshbonnick dans https://github.com/laravel/framework/pull/48012
  • [10.x] Correction du chevauchement de RetryBatchCommand des tâches ayant échoué lorsqu'elles sont exécutées simultanément avec le même ID de lot à l'aide de isolatableId par @rybakihor dans https://github.com/laravel/framework/pull/48000
  • [10.x] Correction de assertRedirectToRoute lorsque l'uri de la route est vide par @khernik93 dans https://github.com/laravel/framework/pull/48023
  • [10.x] Correction d'un tableau vide affiché lors de l'utilisation de l'option --pending mais il n'y a pas de migrations en attente par @TheBlckbird dans https://github.com/laravel/framework/pull/48019
  • [10.x] Correction de l'utilisation forcée de la connexion DB en écriture par @oleksiikhr dans https://github.com/laravel/framework/pull/48015
  • [10.x] Utiliser la distribution du modèle lorsque le constructeur a été créé mis à jour à la valeur par @timacdonald dans https://github.com/laravel/framework/pull/47942
  • [10.x] Fix Collection::search et LazyCollection::search return type par @bastien-phi dans https://github.com/laravel/framework/pull/48030
  • [10.x] Ajout de la possibilité de personnaliser la résolution de classe dans la découverte d'événements par @bastien-phi dans https://github.com/laravel/framework/pull/48031
  • [10.x] Ajouter une méthode de pourcentage aux collections par @WendellAdriel dans https://github.com/laravel/framework/pull/48034
  • [10.x] Correction d'une erreur d'analyse dans la console lorsque la description du paramètre contient -- par @rxrw dans https://github.com/laravel/framework/pull/48021
  • [10.x] Autoriser les auditeurs à spécifier dynamiquement le délai à l'aide de withDelay par @CalebDW dans https://github.com/laravel/framework/pull/48026
  • [10.x] Ajouter des types de retour dynamiques à l'assistant de sauvetage par @axlon dans https://github.com/laravel/framework/pull/48062
  • [10.x] createMany & createManyQuietly ajoute un argument de comptage par @JHWelch dans https://github.com/laravel/framework/pull/48048
  • [10.x] Prise en charge des attributs sur l'emplacement de composant par défaut par @royduin dans https://github.com/laravel/framework/pull/48039
  • [10.x] Ajouter l'attribut WithoutRelations pour la sérialisation du modèle par @Neol3108 dans https://github.com/laravel/framework/pull/47989
  • [10.x] Peut appliquer WithoutRelations à toute la classe par @cosmastech dans https://github.com/laravel/framework/pull/48068
  • [10.x] createMany & createManyQuietly rendent l'argument facultatif par @JHWelch dans https://github.com/laravel/framework/pull/48070

Source : https://laravel-news.com

#laravel #php

Laravel 10.19 publié avec de nouvelles fonctionnalités et des correctifs
1.90 GEEK