>本文探讨了将数据从PHP控制器传递到树枝模板的有效方法,重点是具有许多变量的情况。 传递大型关联阵列的标准方法变得麻烦。 本文建议使用php的compact()
函数和自定义辅助功能only_compact()
简化此过程。
核心问题是将许多变量单独传递到Twig之类的模板引擎的详细性。 例如:
$user = 'user data'; $posts = 'posts'; $comments = 'comments'; // ... many more variables ... $twig->render('author.page', [ 'user' => $user, 'posts' => $posts, 'comments' => $comments, // ... many more entries ... ]);
>这种方法变得难以管理,并有大量变量。 compact()
>功能提供了更简洁的解决方案:
$twig->render('author.page', compact('user', 'posts', 'comments')); // ...
但是,compact()
需要明确列表所有>所需的变量。 本文介绍了一种更复杂的方法,使用get_defined_vars()
>,array_diff()
和array_intersect_key()
>变量> > 一个指定的子集。 这封装在可重复使用的辅助函数中:
// Helpers.php function only_compact($values, $keys) { $keys = array_diff(array_keys($values), $keys); return array_intersect_key($values, array_flip($keys)); }
此only_compact()
函数获取所有定义的变量和变量列表来排除,返回一个仅包含其余变量的数组。 示例用法:
$twig->render('author.page', only_compact(get_defined_vars(), ['counter', 'twig']));
这仅通过将这些变量仅指定为>排除来有效地管理大量变量。 与手动方法相比,黑火的性能测试可忽略不计的间接费用。
应包括composer.json
> "helpers.php"
>配置的部分,以使助手功能可用。"files"
>
以上是快速提示:将数据传递到视图的便利hacks的详细内容。更多信息请关注PHP中文网其他相关文章!