这一篇我们来介绍一个在Jsnpp框架里面非常重要的概念,就是“全链”。
全链是Jsnpp框架的独创,他可以让您写出更加简洁和紧凑的代码,全链从表面上看是链式语句,但他完全不同于常见的链式语法。因为全链允许您从接收数据到存储数据,再到输出内容的全部过程都在一条链上完成,这也就意味着您甚至可以实现只使用一条语句就可以完成整个处理过程的所有工作。
是不是感觉很神奇,甚至有点小震惊^_^
我们先来看一段代码:
namespace app\controller;
use jsnpp\Controller;
class Index extends Controller
{
public function index()
{
$this->view->assign('webroot', $this->route->rootUrl())->display();
}
public function views($param)
{
$this->app->entrance->check('post')->check($param['id'], 'require', 'ID缺失')->db->table('posts')->where('id', $param['id'])->data('views', 'views+1')->update()->output->display(':ok')->finish();
}
}
在上面的例子里面,我们在“Index”控制器里面添加了一个新的方法“views”,这个方法里面的代码实际上只有一条语句,这条语句就是一个全链。下面来详细解释一下这个简单的全链。
“$this->app->entrance”是应用入口,入口后代码先检查了是否是“post”访问,如果不是post访问,那么会直接返回错误信息。接着检查“$param['id']”是否有值,如果没有传递进来id参数的话,会输出错误信息“ID缺失”。再接着是一个数据库处理,当前面的检查都没有问题的时候,就把数据库表“posts”里面的“views”字段加一。接着使用“output”的“display”进行输出,这里的输出我们使用的是“:ok”这样的形式,表示输出“ok”,并且使用Json方式输出。如果没有冒号的话,那么会以字符串形式输出。全链的错误信息都是使用Json方式输出的,所以为了保持一致,一般来说,这里的“ok”建议带上冒号。
全链的最后,必须要用“finish()”结束,这点很重要。
我们可以比较一下上面代码里面“index”方法里面的代码,这个代码是Jsnpp框架下载后的默认输出首页的代码,我们在下面再贴一下这行代码如下:
$this->view->assign('webroot', $this->route->rootUrl())->display();
上面这行代码是普通的链式代码,但不是全链代码。
Jsnpp可以使用普通的链式代码来写程序,也可以使用全链方式来写程序。全链的好处是一气呵成,代码清晰,容易理解,方便维护。