Fragment ヘルパー クラスを使用して Kohana (3.2.2) アプリケーションを最適化しようとしていますが、それが間違っていることに気付きました。
モデル_記事:
public function get_articles()
{
/*
* This is just a PDO wrapper, I don't like the kohana built in
* database module
*/
$db = DB::instance();
$article_stmt = $db->prepare("SELECT * FROM articles");
$article_stmt->execute();
return $article_stmt->fetchAll();
}
Controller_Article:
public function action_index()
{
$this->template->content = View::factory('welcome/index');
$this->template->content->articles = Model::factory('article')->get_articles();
}
景色:
<?php if ( ! Fragment::load('home.articles')): ?>
<!-- cache test -->
<?php foreach($articles as $article) echo $article->title . PHP_EOL ?>
<?php Fragment::save(); ?>
<?php endif; ?>
ご覧のとおり、ビューで何が起こっていても、クエリは常に実行されます。キャッシュが更新されたときにクエリを実行したい。しかし、モデル オブジェクトをビューに渡すと、いくつかの MVC 慣習が壊れてしまうのではないでしょうか?! 誰かがそれを正しく行う方法を教えてもらえますか?!