>本文探討了將數據從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中文網其他相關文章!