Maison >développement back-end >tutoriel php >Laravel Un bond en avant dans les tests, les identifiants de modèle et l'autorisation

Laravel Un bond en avant dans les tests, les identifiants de modèle et l'autorisation

Linda Hamilton
Linda Hamiltonoriginal
2025-01-14 07:44:43613parcourir

Laravel  A Leap Forward in Testing, Model IDs, and Authorization

Laravel, le principal framework d'applications Web PHP, vient de publier la version 11.30, remplie de nouvelles fonctionnalités et d'améliorations intéressantes qui stimulent la productivité des développeurs et la flexibilité du code. Explorons les principales mises à jour.

Tests rationalisés avec de nouveaux assistants : withDefer() et withoutDefer()

Laravel 11.30 présente withDefer() et withoutDefer(), gracieuseté de Tim MacDonald. Ceux-ci sont inestimables lors du test de code utilisant des appels différés, vous permettant de désactiver de manière sélective le report pour un contrôle précis des assertions.

Exemple illustratif utilisant withoutDefer() :

<code class="language-php">// This won't work correctly
User::create(/* ... */);
$this->assertAgainstSomeDeferredOutcome();

// This works as intended
$this->withoutDefer();
User::create(/* ... */);
$this->assertAgainstSomeDeferredOutcome();</code>

Ce contrôle amélioré des opérations différées pendant les tests conduit à des résultats de test plus fiables et plus précis.

ID de chaîne uniques personnalisés avec le HasUniqueStringIds trait

La contribution de Luke Kuzmish, le trait HasUniqueStringIds, permet aux développeurs d'utiliser des identifiants de chaîne uniques personnalisés comme clés de route sans modifier resolveRouteBindingQuery(). Cela étend les traits HasUuids et HasUlid existants, offrant une plus grande flexibilité de génération d'identifiants.

Mise en œuvre d'ID de chaîne uniques personnalisés :

<code class="language-php">trait HasTwrnsTrait
{
    use HasUniqueStringIds;

    public function newUniqueId()
    {
        return (string) Twrn::new();
    }

    protected function isValidKey($value): bool
    {
        return Twrn::isValid($value);
    }
}</code>

Cette fonctionnalité permet des identifiants de modèle hautement personnalisés tout en s'intégrant de manière transparente aux pratiques standard de Laravel.

Autorisation améliorée avec prise en charge directe d'Enum

La mise à jour par Johan van Helden du trait AuthorizesRequests accepte désormais directement les énumérations sauvegardées, ce qui s'aligne sur l'adoption récente par Laravel du framework Enums.

Utiliser un Enum avec la méthode authorize() :

<code class="language-php">enum DashboardPermission: string
{
    case VIEW = 'dashboard.view';
}

// Previously
public function index(): Response
{
    $this->authorize(DashboardPermission::VIEW->value);
    // ...
}

// Now
public function index(): Response
{
    $this->authorize(DashboardPermission::VIEW);
    // ...
}</code>

Cette simplification améliore la sécurité des types et la lisibilité du code d'autorisation.

Autres améliorations importantes

La version 11.30 comprend également :

  • Fonctionnalité Blade::directive étendue avec un paramètre $bind.
  • Problèmes trans_choice() résolus avec les remplacements de traduction contenant le séparateur |.
  • Optimisation des performances en utilisant exists() au lieu de count() dans des scénarios spécifiques.
  • Ajout de la prise en charge des opérateurs Postgres personnalisés.
  • Introduit des dimensions facultatives pour le type de colonne vectorielle.
  • Message d'erreur amélioré pour PostTooLargeException.
  • Correction d'une violation de contrainte d'intégrité concernant failed_jobs_uuid_unique.

Laravel 11.30 souligne l'engagement du framework en faveur de l'amélioration continue et de l'expérience des développeurs. Avec des tests raffinés, des ID de modèle flexibles et une autorisation rationalisée basée sur Enum, cette version fournit aux développeurs de nouveaux outils puissants pour créer un code plus propre et plus efficace. Laravel reste un premier choix pour les développeurs PHP créant des applications Web robustes et riches en fonctionnalités.

Prêt à tirer parti de Laravel pour développer votre entreprise ? Contactez-nous aujourd'hui.

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:
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