Table des matières
Prise en charge du rappel pour la méthode Implode de la collection
Utiliser de fausses assertions de stockage Un répertoire vide
L'assertion JSON "assertJsonPath()" accepte désormais les fermetures
Faking partiel de file d'attente
Nouvelle façon de créer un modèle "traversant"
Nouvelle fonction d'assistance à l'encapsulation de chaîne
Fonction d'assistance Freeze Time pour les tests
Permet d'accepter des objets appelables dans la méthode Http::beforeSending ()
Notes de version
Maison cadre php Laravel Résumez les nouveaux ajouts, correctifs et modifications dans la version Laravel 9.5 !

Résumez les nouveaux ajouts, correctifs et modifications dans la version Laravel 9.5 !

Mar 21, 2022 am 09:57 AM
laravel

Cet article vous apporte des connaissances pertinentes sur laravel L'équipe Laravel a publié la version 9.5, qui inclut la falsification de file d'attente partielle, la fonction auxiliaire freezeTime(), l'assertion storage assertDirectoryEmpty(), etc.

Résumez les nouveaux ajouts, correctifs et modifications dans la version Laravel 9.5 !

【Recommandation associée : vidéo laravel

L'équipe Laravel a publié la version 9.5, qui inclut la falsification de file d'attente partielle, la fonction d'assistance freezeTime (), l'assertion de stockage assertDirectoryEmpty (), la fermeture dans assertJsonPath (), etc. :

Prise en charge du rappel pour la méthode Implode de la collection

@Lito a contribué au support du rappel sur Collect::implode() pour simplifier les appels ->map()->implode() :

// 之前<br/>{{ $user->cities->map(fn ($city) => $city->name.&#39; (&#39;.$city->state->name.&#39;)&#39;)->implode(&#39;, &#39;) }}<br/>// 使用回调 <br/>{{ $user->cities->implode(fn ($city) => $city->name.&#39; (&#39;.$city->state->name.&#39;)&#39;, &#39;, &#39;) }}<br/>
Copier après la connexion

Utiliser de fausses assertions de stockage Un répertoire vide

Marquer Beech a contribué à la possibilité d'affirmer un répertoire vide à l'aide d'une instance Storage::fake() :

// 9.5 版本之前<br/>$this->assertEmpty(Storage::disk(&#39;temp&#39;)->allFiles(&#39;/foo&#39;));<br/>// +9.5<br/>Storage::disk(&#39;temp&#39;)->assertDirectoryEmpty(&#39;/foo&#39;);<br/>
Copier après la connexion

S'il n'y a aucun fichier dans le répertoire, seulement d'autres sous-répertoires, l'assertion échouera car elle contient d'autres dossiers/fichiers. Voici un exemple tiré de la discussion sur la pull request :

Storage::fake(&#39;temp&#39;);<br/>Storage::disk(&#39;temp&#39;)->put(&#39;/foo/bar.txt&#39;, &#39;string&#39;);<br/>Storage::disk(&#39;temp&#39;)->assertDirectoryEmpty(&#39;/&#39;); // 失败<br/>
Copier après la connexion

L'assertion JSON "assertJsonPath()" accepte désormais les fermetures

Fabien Villepinte a contribué à la possibilité de transmettre des fermetures à assertJsonPath sans aucune rupture rétrocompatible :

$response = TestResponse::fromBaseResponse(new Response([<br/>    &#39;data&#39; => [&#39;foo&#39; => &#39;bar&#39;],<br/>]));<br/>$response->assertJsonPath(&#39;data.foo&#39;, &#39;bar&#39;);<br/>$response->assertJsonPath(&#39;data.foo&#39;, fn ($value) => $value === &#39;bar&#39;);<br/>
Copier après la connexion

Bien que l'exemple ci-dessus semble plus simple en utilisant la version chaîne, si vous avez besoin d'une logique plus complexe autour des assertions de chemin, vous pouvez désormais utiliser des fermetures.

Faking partiel de file d'attente

Taylor Otwell a contribué à la simulation partielle pour la file d'attente testée :

Queue::fake([JobsToFake::class, /* ... */]);<br/>
Copier après la connexion

Nouvelle façon de créer un modèle "traversant"

Hafez Divandari a contribué sans avoir besoin de remplacer l'intégralité de la méthode hasOneThrough ou hasManyThrough pour en créer un nouveau Capacités du modèle « through » :

// Define a `newThroughInstance` method<br/>protected function newThroughInstance($resource)<br/>{<br/>    return (new \App\Models\ExampleEntity)->setTable($resource);<br/>}<br/>
Copier après la connexion

Nouvelle fonction d'assistance à l'encapsulation de chaîne

Markus Hebenstreit a contribué à la fonction d'assistance à la chaîne wrap(). Voici un exemple d'utilisation tiré de la description de la demande d'extraction :

Str:wrap(&#39;value&#39;)->wrap(&#39;"&#39;);<br/>Str::of(&#39;value&#39;)->wrap(&#39;"&#39;);<br/>str(&#39;value&#39;)->wrap(&#39;"&#39;);<br/>// 输出: "value"<br/>Str:wrap(&#39;is&#39;, &#39;This &#39;, &#39; me!&#39;);<br/>Str::of(&#39;is&#39;)->wrap(&#39;This &#39;, &#39; me!&#39;);<br/>str(&#39;is&#39;)->wrap(&#39;This &#39;, &#39; me!&#39;);<br/>// 输出: This is me!<br/>
Copier après la connexion

Fonction d'assistance Freeze Time pour les tests

@Italo a contribué à la fonction d'assistance freezeTime() - une méthode de test qui figera l'heure actuelle dans le test :

public function test_something()<br/>{<br/>    $this->freezeTime();<br/>    // 或将时间设置为日期的当前秒<br/>    // 没有亚秒级精度。<br/>    $this->freezeSecond();<br/>}<br/>
Copier après la connexion

Le freezeTime( ) est un sucre syntaxique pour :

$this->travelTo(Carbon::now());<br/>
Copier après la connexion

Permet d'accepter des objets appelables dans la méthode Http::beforeSending ()

Dries Vints aide à accepter des objets appelables dans la méthode Http::beforeSending() au lieu de seulement des classes appelables uniquement. Désormais, l'exemple suivant fonctionnera au lieu d'obtenir « appeler la fonction membre __invoke() sur un tableau » :

Http::baseUrl(&#39;https://api.example.org&#39;)<br/>    ->beforeSending([ $this, &#39;prepareRequest&#39; ])<br/>    ->asJson()<br/>    ->withoutVerifying();<br/>
Copier après la connexion

Notes de version

Vous pouvez consulter la liste complète des nouvelles fonctionnalités et mises à jour ci-dessous et consulter la version 9.4.0 sur GitHub Différences entre 9.5.0 et 9.5.0. Les notes de version suivantes sont tirées directement du journal des modifications :

Version 9.5.0

Nouveau

  • ajoute la prise en charge du rappel pour la méthode de collecte d'implosion. (#41405)

  • Ajout d'Illuminate/Filesystem/FilesystemAdapter::assertDirectoryEmpty(). (#41398)

  • Implémentez les "métadonnées" de courrier électronique pour SesTransport. (#41422)

  • Faites en sorte que assertPath () accepte une fermeture. (#41409)

  • Ajout du support appelable pour OperatorForWhere sur les collections. (#41414, #41424)

  • Ajout d'une falsification de file d'attente partielle. (#41425)

  • Ajout de l'option –name à la commande planning:test. (#41439)

  • définit Illuminate/Database/Eloquent/Concerns/HasRelationships::newRelatedThroughInstance(). (#41444)

  • Ajout d'Illuminate/Support/Stringable::wrap() (#41455)

  • Ajout de la fonction d'assistance « freezeTime » pour les tests. (#41460)

  • Autorise l'utilisation des appels beforeSending dans Illuminate/Http/Client/PendingRequest.php::runBeforeSendingCallbacks(). (#41489)

FIX

  • Correction d'un avertissement de dépréciation de route:list lors du filtrage sur le nom ou le domaine. (#41421)

  • Correction de la réponse HTTP::pool lorsque l'URL renvoie un code d'état vide. (#41412)

  • Résolution du nom du rappel fixe dans Illuminate/Session/Middleware/AuthenticateSession.php. (#41429)

  • Fixe de l'instance de garde utilisée dans /Illuminate/Session/Middleware/AuthenticateSession.php (#41447)

  • Fixe route:list –sauf-vendor, en utilisant Modifié dans la route cachée ::view () & Route::redirect () (#41465)

  • Ajoutez un type vide pour les propriétés de connexion dans IlluminateDatabaseEloquentFactoriesFactory . (#41418)

  • Noms réservés mis à jour dans GeneratorCommand (#41441)

  • Planification artisanale php repensée : commande list. (#41445)

  • Propriétés proxy d'ordre élevé éloquentes étendues. (#41449)

  • Autoriser la transmission de paramètres nommés à des étendues locales dynamiques. (#41478)

  • Exception levée si la balise réussit mais n'est pas prise en charge dans Illuminate/Encryption/Encrypter.php . (#41479)

  • La mise à jour PackageManifest::$vendorPath est initialisée pour le cas où le dossier du fournisseur du compositeur n'est pas dans le dossier du projet. (#41463)

【Recommandation associée : tutoriel vidéo laravel

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment obtenir le code de retour lorsque l'envoi par e-mail échoue à Laravel? Comment obtenir le code de retour lorsque l'envoi par e-mail échoue à Laravel? Apr 01, 2025 pm 02:45 PM

Méthode pour obtenir le code de retour lorsque l'envoi par e-mail de Laravel échoue. Lorsque vous utilisez Laravel pour développer des applications, vous rencontrez souvent des situations où vous devez envoyer des codes de vérification. Et en réalité ...

La tâche de calendrier Laravel n'est pas exécutée: que dois-je faire si la tâche n'est pas en cours d'exécution après le calendrier: Exécuter la commande? La tâche de calendrier Laravel n'est pas exécutée: que dois-je faire si la tâche n'est pas en cours d'exécution après le calendrier: Exécuter la commande? Mar 31, 2025 pm 11:24 PM

Laravel Schedule Tâche d'exécution de dépannage non réactif Lorsque vous utilisez la planification des tâches de calendrier de Laravel, de nombreux développeurs rencontreront ce problème: Schedule: Exécuter ...

Dans Laravel, comment gérer la situation où les codes de vérification ne sont pas envoyés par e-mail? Dans Laravel, comment gérer la situation où les codes de vérification ne sont pas envoyés par e-mail? Mar 31, 2025 pm 11:48 PM

La méthode de traitement de l'échec de l'e-mail de Laravel à envoyer le code de vérification est d'utiliser Laravel ...

Comment implémenter la fonction de table personnalisée de clic pour ajouter des données dans l'administrateur DCAT? Comment implémenter la fonction de table personnalisée de clic pour ajouter des données dans l'administrateur DCAT? Apr 01, 2025 am 07:09 AM

Comment implémenter la fonction du tableau de Cliquez sur personnalisé pour ajouter des données dans DCATADMIN (Laravel-Admin) lors de l'utilisation de DCAT ...

Partage de connexion Laravel Redis: pourquoi la méthode de sélection affecte-t-elle d'autres connexions? Partage de connexion Laravel Redis: pourquoi la méthode de sélection affecte-t-elle d'autres connexions? Apr 01, 2025 am 07:45 AM

L'impact du partage des connexions redis dans Laravel Framework et sélectionnez Méthodes Lors de l'utilisation de Laravel Framework et Redis, les développeurs peuvent rencontrer un problème: grâce à la configuration ...

Laravel Multi-Lenant Extension Stancl / Tenancy: Comment personnaliser l'adresse hôte d'une connexion de base de données de locataire? Laravel Multi-Lenant Extension Stancl / Tenancy: Comment personnaliser l'adresse hôte d'une connexion de base de données de locataire? Apr 01, 2025 am 09:09 AM

Connexion de la base de données des locataires personnalisés dans le package d'extension multi-locataire Laravel Stancl / location Lors de la construction d'applications multi-locataires à l'aide du package d'extension multi-locataire Laravel Stancl / location, ...

Laravel Eloquent Orm dans Bangla Partial Model Search) Laravel Eloquent Orm dans Bangla Partial Model Search) Apr 08, 2025 pm 02:06 PM

Laravelelognent Model Retrieval: Faconttement l'obtention de données de base de données Eloquentorm fournit un moyen concis et facile à comprendre pour faire fonctionner la base de données. Cet article présentera en détail diverses techniques de recherche de modèles éloquentes pour vous aider à obtenir efficacement les données de la base de données. 1. Obtenez tous les enregistrements. Utilisez la méthode All () pour obtenir tous les enregistrements dans la table de base de données: usApp \ Modèles \ Post; $ poters = post :: all (); Cela rendra une collection. Vous pouvez accéder aux données à l'aide de Foreach Loop ou d'autres méthodes de collecte: ForEach ($ PostsAs $ POST) {echo $ post->

Géospatial de Laravel: optimisation des cartes interactives et de grandes quantités de données Géospatial de Laravel: optimisation des cartes interactives et de grandes quantités de données Apr 08, 2025 pm 12:24 PM

Traiter efficacement 7 millions d'enregistrements et créer des cartes interactives avec la technologie géospatiale. Cet article explore comment traiter efficacement plus de 7 millions d'enregistrements en utilisant Laravel et MySQL et les convertir en visualisations de cartes interactives. Exigences initiales du projet de défi: extraire des informations précieuses en utilisant 7 millions d'enregistrements dans la base de données MySQL. Beaucoup de gens considèrent d'abord les langages de programmation, mais ignorent la base de données elle-même: peut-il répondre aux besoins? La migration des données ou l'ajustement structurel est-il requis? MySQL peut-il résister à une charge de données aussi importante? Analyse préliminaire: les filtres et les propriétés clés doivent être identifiés. Après analyse, il a été constaté que seuls quelques attributs étaient liés à la solution. Nous avons vérifié la faisabilité du filtre et établi certaines restrictions pour optimiser la recherche. Recherche de cartes basée sur la ville

See all articles