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.
Le problème de base est la verbosité de passer individuellement de nombreuses variables à un moteur de modèle comme la brindille. Par exemple:
$user = 'user data'; $posts = 'posts'; $comments = 'comments'; // ... many more variables ... $twig->render('author.page', [ 'user' => $user, 'posts' => $posts, 'comments' => $comments, // ... many more entries ... ]);
Cette approche devient ingérable avec un grand nombre de variables. La fonction compact()
offre une solution plus concise:
$twig->render('author.page', compact('user', 'posts', 'comments')); // ...
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:
// Helpers.php function only_compact($values, $keys) { $keys = array_diff(array_keys($values), $keys); return array_intersect_key($values, array_flip($keys)); }
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:
$twig->render('author.page', only_compact(get_defined_vars(), ['counter', 'twig']));
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.
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!