Sortie de Laravel 9.10 - Letecode
NON ! à la guerre à l'Est de la RDC rdc ! non à la guerre et En Ukraine ukraine

Sortie de Laravel 9.10

Jean Claude - 3 mai 2022 57 Laravel

L'équipe Laravel a publié la version 9.10 avec une méthode findOr() Eloquent, une nouvelle assertion de commande, récupère l'entrée en tant qu'instance Stringable, et plus.

Sortie de Laravel 9.10 - Letetcode

Avant d'actualiser la fonction de base de données

Rok Sprogar a contribué avec 'beforeRefreshingDatabase'  au trait RefreshDatabase. Cela vous permet d'exécuter du code avant que la base de données ne commence à s'actualiser :

 

class DataExportTest extends TestCase
{
    use RefreshDatabase;
    protected $seed = true; 
  protected function beforeRefreshingDatabase()
    {
        $this->artisan('db:wipe --database another-database-connection');
    }

    // ...
}

N'attend pas l'affirmation de la commande de sortie

Markus Hebenstreit a contribué à une méthode doesntExpectOutputToContain d'assertion Command qui s'explique d'elle-même :

 

Artisan::command('contains', function () {
    $this->line('My name is Taylor Otwell');
});
$this->artisan('contains')
    ->doesntExpectOutputToContain('Taylor Otwell');

Méthode éloquent "findOr"

Jess Archer a contribué avec une méthode findOr() au constructeur et aux relations éloquents. Cette méthode firstOr() correspond aux méthodes existantes :

 

User::findOr(1, fn () => throw new RuntimeException);
User::findOr(1, fn () => abort(403));
User::findOr(1, fn () => 'retourne quelque chose');
User::findOr(1, ['columns'], fn () => '...');
 
// Marche aussi avec les relations
$user->posts()->findOr(1, fn () => '...');

Extension compilée personnalisable

Taylor Otwell a contribué à une extension View compilée configurable qui est personnalisable via la configuration view lorsqu'elle est transmise au compilateur de Blade :

 

new BladeCompiler(
    $app['files'],
    $app['config']['view.compiled'],
    $app['config']->get('view.relative_hash', false) ? $app->basePath() : '',
    $app['config']->get('view.cache', true),
    $app['config']->get('view.compiled_extension', 'php'),
);

Prise en charge des opérateurs PostgreSQL "IS" et "IS NOT"

Markus Koch a contribué au support des operateurs  'is' et 'is not' lors de l'utilisation de PostgreSQL. Voir le Pull request #42123 pour plus de détails.

 

Récupérer l'entrée du Request en tant que chaîne

Cameron Wilby et Taylor Otwell ont contribué à la capacité de récupérer les entrées de la requête en tant qu'instance Stringable :

 

$name = $request->string('name');
// ou
$name = $request->str('name');

Append et Prepend des Jobs à la chaîne existante

Jan-Oliver Pantel a contribué avec prependToChain() aux méthodes appendToChain d'ajout et de préfixation des tâches :

 

Le cas d'utilisation pour cela est chaque fois qu'un travail au sein d'une chaîne veut mettre des travaux en file d'attente sur sa propre chaîne sans avoir besoin d'en créer un nouveau et d'attendre l'exécution réussie de la "chaîne enfant".

Ceci est techniquement déjà possible puisque toutes les propriétés et méthodes nécessaires sont publiques. Cependant, avoir des fonctions formalisées pour cela permet d'obtenir un meilleur DX.

 

Voir le Pull request #42138 pour plus de détails.

 

Notes de version

Vous pouvez voir la liste complète des nouvelles fonctionnalités et mises à jour ci-dessous et le diff entre 9.9.0 et 9.10.0 sur GitHub. Les notes de version suivantes proviennent directement du journal des modifications :

 

v9.10.0

Ajouts

  • Ajout de la possibilité d'utiliser un alias lors de l'upsert via MySQL ( #42053 )
  • Illuminate/Routing/Router::middlewareGroup() prendra en charge le tableau des middlewares ( #42004 , e6b84fb )
  • Ajout de l'attribut AsCommand manquant sur schedule:list ( #42069 )
  • Ajoutez la fonction beforeRefreshingDatabase au trait Testing/RefreshDatabase ( #42073 )
  • Ajout de la méthode d'assertion doesntExpectOutputToContain ( #42096 )
  • Ajout d'une méthode findOr à Eloquent ( #42092 )
  • Autoriser l'extension dans Illuminate/View/Compilers/Compiler.php( 68e41fd )
  • Prend en charge les opérateurs PostgreSQL 'IS' et 'IS NOT' ( #42123 )
  • Ajout de méthodes stret stringà Illuminate/Http/Concerns/InteractsWithInput ( c9d34b7 )
  • Ajout de méthodes pour ajouter et préfixer des travaux à la chaîne existante ( #42138 )

Correctifs

  • Faites en sorte que les travaux inexistants s'exécutent sur le chemin ayant échoué au lieu de planter ( #42079 )
  • Fix schedule:work command Artisan nom binaire ( #42083 )
  • Correction du middleware TrimStrings avec des caractères non UTF8 ( #42065 )
  • Copiez les paramètres régionaux et defaultLocale de la requête d'origine dans Request::createFrom() ( #42080 )
  • Correction de ViewErrorBag pour la sérialisation de session JSON ( #42090 )
  • Correction des clés de tableau des routes mises en cache dans CompiledRouteCollection::getRoutesByMethod() ( #42078 )
  • Correction du problème json_last_error avec JsonResponse::setData ( #42125 )
  • Correction d'un bug dans BelongsToMany où des lignes non liées sont renvoyées ( #42087 )
  • Correction de HasAttributes::mutateAttributeForArray lors de l'accès à un attribut non mis en cache ( #42130 )

Modifications

  • Rendre les erreurs de règle de mot de passe traduisibles ( #42060 )
  • Refonte de la commande event:list. ( #42068 )
  • Événement modifié : commande de liste ( #42084 )
  • Lancer LostDbConnectionException au lieu de LogicException ( #42102 )
  • Lancer une exception d'interblocage ( #42129 )
  • Prise en charge de Arr::forget() pour les objets ArrayAccess imbriqués ( #42142 )
  • Autoriser Illuminate/Collections/Enumerable::jsonSerialize() à renvoyer d'autres types ( #42133 )
  • Calendrier de mise à jour : sortie de coloration de la liste ( #42153 )

1
Jean Claude Mbiya
Jean Claude Mbiya

+4 ans d'expérience en Développement web et mobile, Fondateur de letecode.com et formateur 👨‍💻

1 commentaire(s)

  • Image placeholder
    @Droid il y a 3 semaines

    J'ai trop aimé l'article, j'ai appris beaucoup de choses sans visiter la documentation officielle

    Répondre

Laissez votre commentaire à @johnmbiya

ou pour laisser un commentaire