Segmentfault 用的框架里的Data模式是什么?
Jun 06, 2016 pm 08:51 PM
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>
这只是些最基本的用法,还有更多复杂的用法就不一一介绍了,比如输出字段的时候可以带参数等等

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian
