Maison >développement back-end >tutoriel php >Conseil rapide: hacks de commodité pour passer des données aux vues

Conseil rapide: hacks de commodité pour passer des données aux vues

Lisa Kudrow
Lisa Kudroworiginal
2025-02-14 08:35:12802parcourir

Cet article explore des moyens efficaces de passer les données d'un contrôleur PHP à un modèle de brindille, en se concentrant sur les situations avec de nombreuses variables. La méthode standard de passage d'un grand réseau associatif devient lourd. Cet article propose d'utiliser la fonction PHP compact() et une fonction d'assistance personnalisée only_compact() pour rationaliser ce processus.

Quick Tip: Convenience Hacks for Passing Data to Views

Le problème de base est la verbosité de passer individuellement de nombreuses variables à un moteur de modèle comme la brindille. Par exemple:

<code class="language-php">$user = 'user data';
$posts = 'posts';
$comments = 'comments';
// ... many more variables ...

$twig->render('author.page', [
    'user' => $user,
    'posts' => $posts,
    'comments' => $comments,
    // ... many more entries ...
]);</code>

Cette approche devient ingérable avec un grand nombre de variables. La fonction compact() offre une solution plus concise:

<code class="language-php">$twig->render('author.page', compact('user', 'posts', 'comments')); // ...</code>

Cependant, compact() nécessite une liste explicite toutes les variables souhaitées . L'article présente une approche plus sophistiquée utilisant get_defined_vars(), array_diff() et array_intersect_key() pour passer toutes les variables sauf un sous-ensemble spécifié. Ceci est encapsulé dans une fonction d'assistance réutilisable:

<code class="language-php">// Helpers.php
function only_compact($values, $keys) {
    $keys = array_diff(array_keys($values), $keys);
    return array_intersect_key($values, array_flip($keys));
}</code>

Cette fonction only_compact() prend toutes les variables définies et une liste de variables à exclure, renvoyant un tableau contenant uniquement les variables restantes. Exemple d'utilisation:

<code class="language-php">$twig->render('author.page', only_compact(get_defined_vars(), ['counter', 'twig']));</code>

Cela gère efficacement un grand nombre de variables en spécifiant uniquement celles à exclure . Les tests de performances avec un feu noir montre des frais généraux négligeables par rapport à la méthode manuelle.

Quick Tip: Convenience Hacks for Passing Data to Views Quick Tip: Convenience Hacks for Passing Data to Views

L'article conclut en résumant les meilleures pratiques et les questions fréquemment posées concernant le passage des données aux vues, couvrant des sujets tels que des tableaux associatifs, des objets, des boucles et des fonctions de brindilles communes. Le composer.json doit inclure "helpers.php" sous la section "files" de la configuration "autoload" pour rendre la fonction d'assistance disponible.

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