现在位置: 首页 > 所有关于 ThinkPHP框架 文章
17joys用户管理功能-控制器
用户名模型创建完毕后,接下来就要完成控制器的定义了,也就是要决定用户都有哪些操作。
ThinkPHP采用模块和操作的方式来执行,首先,用户的请求会通过入口文件生成一个应用实例,应用控制器(我们称之为核心控制器)会管理整个用户执行的过程,并负责模块的调度和操作的执行,并且在最后销毁该应用实例。任何一个WEB行为都可以认为是一个模块的某个操作,系统会根据当前的URL来分析要执行的模块和操作。这个分析工作由URL调度器来实现,官方内置了Dispatcher类来完成该调度。
在Dispatcher调度器中,会根据URL:http://servername/appName/moduleName/actionName/params
来获取当前需要执行的项目(appName)、模块(moduleName)和操作(actionName),在某些情况下,appName可以不需要(通常是网站的首页,因为项目名称可以在入口文件中指定,这种情况下,appName就会被入口文件替代)。在复杂一点的情况下面,可能还会出现分组(groupName)。
每个模块是一个Action文件,类似于我们平常所说的控制器,系统会自动寻找项目类库Action目录下面的相关类,如果没有找到,则会定位到空模块,否则抛出异常。
而actionName操作是首先判断是否存在Action类的公共方法,如果不存在则会继续寻找父类中的方法,如果依然不存在,就会寻找是否存在自动匹配的模版文件。如果存在模版文件,那么就直接渲染模版输出。
因此应用开发中的一个重要过程就是给不同的模块定义具体的操作。一个应用如果不需要和数据库交互的时候可以不需要定义模型类,但是必须定义Action控制器。
Action控制器的定义非常简单,只要继承Action基础类就可以了,例如:
class UserAction extends Action{
}
如果我们要执行下面的URL
http://servername/index.php/User/add
你需要增加一个add方法就可以了,例如
Class UserAction extends Action{
// 定义一个add操作方法,注意操作方法不需要任何参数
Public function add(){
// add操作方法的逻辑实现
// ……
$this->display(); // 输出模板页面
}
}
操作方法必须定义为Public类型,否则会报错。并注意操作方法的命名不要和内置的Action类的方法重复。系统会自动定位当前操作的模板文件,而默认的模板文件应该位于项目目录下面的Tpl\default\User\add.html。
17JoysCMS用户管理功能需要的操作就是:用户列表、创建用户、编辑用户、删除用户、插入用户数据、更新用户数据
所以控制器的结构如下
class UserAction extends CommonAction{
/*
用户列表
*/
funciton index(){
[...]
17joys用户管理功能-模型
现在后台页面的搭建工作已经完成,不知道大家有没有找到满意的模板,反正我是找到了,呵呵!接下来要做的就是后台的功能了,第一个需要完成的功能就是用户管理功能。对于功能的编写说白了主要就是对数据库的操作,数据的操作无外乎增、删、改、查这四大项,在ThinkPHP中叫CURD。
针对17joys控制器的扩展
在我们编写代码的时候,尽量要多考虑一些以后可能会附带的功能要求,为这些功能留下编写的余地,这样就能增加扩展性,我在查看ThinkPHP源码的时候发现,每次控制器初始化的时候都会去调用一个_initialize()方法,那我就思考,以后肯定会针对所有的控制器模块定义公共方法,所以我考虑扩展Action类,把这些公共方法都放进去,这就产生了CommonAction类。
17joys项目代码的命名规范
每个项目都会有相关的开发文档,其中一个非常有用的文档就是代码编写规范。
下面是使用ThinkPHP应该尽量遵循的命名规范,请大家编写时务必注意,养成良好的代码编写习惯是做好一个程序员非常关键的一步:
17joys后台主模块-控制器
完成了17joys的项目配置后,我就可以正式开始编写项目的后台功能代码了,首先是后台首页,ThinkPHP采用模块和操作的方式来执行,首先,用户的请求会通过入口文件生成一个应用实例,应用控制器(我们称之为核心控制器)会管理整个用户执行的过程,并负责模块的调度和操作的执行,并且在最后销毁该应用实例。任何一个WEB行为都可以认为是一个模块的某个操作,系统会根据当前的URL来分析要执行的模块和操作。
17joys项目配置
ThinkPHP的默认读取配置文件是在Conf目录下的config.php文件,不过为了以后多个项目方便调用,我决定在项目根目录下创建一个config.inc.php文件做为总的配置文件。
17joys代码编写开始-项目目录、入口文件建立
当我决定开始编写17joys的时候,就打算使用一款已经存在的成熟框架进行程序编写,倒不是自己不能写,主要有两个原因,一个是我自己写框架要花费很多时间在框架设计与编写上,而且不见得比现有的一些框架要好,毕竟人家比较专业,而且开发力量雄厚,我自己写肯定有会很多地方考虑不周到的,第二个就是正好借助这个机会好好把ThinkPHP好好研究一番,以后上课的时候可以讲更多的内容给我的学生们,所以决定以ThinkPHP框架为基础开始17joys项目的建设。

最新评论
支持老师,怎么加入呢?
非常喜欢你这个后台的界面,可
博主来吧
酷!