创建控制器
目录
第一个控制器
PESCMS的控制器是依据配置文件中的组和RESTful请求类型进行创建,下面给出一个示例加以说明:
配置文件中有这么一行信息:
'APP_GROUP_LIST' => 'Admin,Home',
上面的表示当前的程序有两个组别控制器。即:
App/Admin
App/Home
清楚这一点后,现在我们创建一个适用于GET请求的控制器。他的访问地址为: http://域名/index.php/Home/Index/index 。在浏览器中访问并输出:Hello World!
在App/Home创建目录GET,并在GET目录下创建一个名为 Index.class.php的文件。
完整的文件目录:App/Home/GET/Index.class.php
控制器文件创建完毕后,我们用编辑器打开,并在里面填写如下代码并保存:
<?php namespace App\Home\GET;// 必须声明命名空间,否则程序将会报错 //控制器必须继承\Core\Controller\Controller class Index extends \Core\Controller\Controller { public function index() { echo 'Hello World'; } }
现在可以访问一下控制器,检阅程序是否能够定位到我们第一个控制器。
注:控制器的名称必须和文件名称一致。如:Index,文件必须为命名为Index.class.php 。Product 必须命名为 Product.class.php 反之亦然
公用控制器
在实际的开发过程,所有控制器都不会选择直接继承PESCMS的控制器的。它们可能需要做一些帐号判断,利用构造函数执行公用方法。这个时候,我们需要创建一个基于组别的公用控制器。在PESCMS中,每一个组的控制器目录下,都有一个名为Common.class.php的公用控制器。它的作用就是负责继承PESCMS的核心控制和实现自身的公用方法。
创建方法和用法非常简单,我们先来创建一个公用的控制器,位于App/Home目录下:
<?php namespace App\Home; //设置为抽象类,是为了防止该控制器被人访问 abstract class Common extends \Core\Controller\Controller { ...省略业务逻辑... }
创建成功后,我们现在有一个订单的控制器,位于App/Home/GET目录下,他将继承公用控制器。
<?php namespace App\Home\GET; //我们直接继承公用控制器则可 class Order extends \App\Home\Common { ...省略业务逻辑... }
现在我们既可以使用PESCMS的核心控制器提供的方法,也可以使用自己编写在公用控制器的方法。
注:上述的仅仅为一个示例用法,更多的用法可以参考《设计模式》之类的书本。