この記事では、多数の変数がある状況に焦点を当てたPHPコントローラーからTwigテンプレートにデータを渡す効率的な方法を調査します。 大きな連想配列を通過する標準的な方法は、面倒になります。 この記事では、このプロセスを合理化するために、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)); }
を除外する変数のみを指定することにより、多数の変数を効果的に管理します。 Blackfireを使用したパフォーマンステストは、手動の方法と比較して無視できる間接します。
only_compact()
$twig->render('author.page', only_compact(get_defined_vars(), ['counter', 'twig']));
この記事は、ベストプラクティスを要約し、ビューに合格するデータに関するよくある質問を要約し、連想配列、オブジェクト、ループ、および一般的な小枝関数などのトピックをカバーすることで締めくくります。 には、ヘルパー関数を使用できるように
構成の>セクションの下に含める必要があります。
以上がクイックヒント:ビューにデータを渡すための便利なハッキングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。