ホームページ > バックエンド開発 > PHPチュートリアル > Segmentfault 用的框架里的Data模式是什么?

Segmentfault 用的框架里的Data模式是什么?

WBOY
リリース: 2016-06-06 20:51:19
オリジナル
1064 人が閲覧しました

Segmentfault 用的框架里的Data模式是什么?

在 http://www.infoq.com/cn/news/2012/09/... 中提到的。

回复内容:

Segmentfault 用的框架里的Data模式是什么?

在 http://www.infoq.com/cn/news/2012/09/... 中提到的。

在SegmentFault框架中我们把Data定义为一个数据管理对象,主要方便在模板中展现。它可以展现单个数据,也可以展现多个数据,这主要是通过继承Iterator接口来实现的迭代器功能。比如我们展示下从数据库取出数据到页面展示的效果

在Action中我们会这样写

// 从model中取出数据
$questions = $this->questionModel->listQuestions();

// 将数组放入迭代器
$this->questions = new Data_Question($questions);

// 展现模板
$this->view->render('questions.php');
ログイン後にコピー

到View中我们就可以操作Data_Question对象了

<?php foreach($questions as $q): ?>
<h2><a href="<?php%20%24q->url();%20?>"><?php $q->title(); ?></a></h2>
<p><?php $q->summary(100, '...'); ?></p>
<?php endforeach; ?>
ログイン後にコピー

可以看出来它的用法大大简化直观,你不需要echo了,因为我们在Data基类中帮你用__call函数实现了通过字段名作为方法名直接输出的工作,当然你也可以echo $q->title,因为我们也对__get函数做了处理,你可以直接调用当前的字段。

更重要的是配合缓存技术的使用,我们可以达到非常梦幻的方法,比如问题作者$q->user,它可以直接返回一个Data_User的对象,那么我们就可以做到使用的时候再查询,想用什么数据就写什么数据,比如我们输出每个问题的作者相关信息

<a href="<?php%20%24q->user->url();%20?>"><?php $q->user->name(); ?> . <?php $q->user->rank(); ?></a>
ログイン後にコピー

这只是些最基本的用法,还有更多复杂的用法就不一一介绍了,比如输出字段的时候可以带参数等等

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート