[TOC]
* * * * *
## 1 控制器基类文件分析(thinkphp/library/think/Controller.php)
~~~
protected $view = null;
protected $beforeActionList = [];
~~~
~~~
public function __construct()
{
$this->view = \think\View::instance(Config::get());
if (method_exists($this, '_initialize')) {
$this->_initialize();
}
if ($this->beforeActionList) {
foreach ($this->beforeActionList as $method => $options) {
is_numeric($method) ?
$this->beforeAction($options) :
$this->beforeAction($method, $options);
}
}
}
~~~
~~~
protected function beforeAction($method, $options = [])
{
if (isset($options['only'])) {
if (is_string($options['only'])) {
$options['only'] = explode(',', $options['only']);
}
if (!in_array(ACTION_NAME, $options['only'])) {
return;
}
} elseif (isset($options['except'])) {
if (is_string($options['except'])) {
$options['except'] = explode(',', $options['except']);
}
if (in_array(ACTION_NAME, $options['except'])) {
return;
}
}
if (method_exists($this, $method)) {
call_user_func([$this, $method]);
}
}
~~~
~~~
public function fetch($template = '', $vars = [], $cache_id = '')
{
return $this->view->fetch($template, $vars, $cache_id);
}
public function show($content, $vars = [])
{
return $this->view->show($content, $vars);
}
public function assign($name, $value = '')
{
$this->view->assign($name, $value);
}
public function engine($engine, $config = [])
{
$this->view->engine($engine, $config);
}
~~~
Controller.php定义了控制的基类操作,大部分是视图的操作调用
`1 public function __construct(){} `
构造函数创建视图对象,并调用控制器实例化方法$this->_initialize(),
最后调用前置操作方法$this->beforeAction()
`2 public function fetch($template = '', $vars = [], $cache_id = ''){}`
`public function show($content, $vars = []){}`
编译模板文件并输出。
`3 public function assign($name, $value = ''){}`
控制器变量传递到模板中
`4 public function engine($engine, $config = []){}`
设置视图的模板渲染引擎
* * * * *
## 2 应用入口分析
应用目录的入口在App::run()的调度类型的module调度中
其分析思路见 [应用启动文件](http://www.kancloud.cn/zmwtp/tp5/119426)与[应用调度分析](http://www.kancloud.cn/zmwtp/tp5/119428)两节。
访问localhost/tp5/public/index.php 时。
根据全局配置文件/thinkphp/convention.php中的配置可知
default_module 默认模块为 index
default_controller 默认控制器 Index,
default_action 默认操作 index,
因此App::run()的module调度类型中会自动访问/applicaiton/index模块
自动加载器的Loader::controller()会自动访问/application/index模块的index控制器。
Index控制器在/applicaiton/index/controller的index.php文件
所以最后调用/application/index/controller/index.php文件的index()。
* * * * *
## 3 应用默认目录(/application/)
~~~
/application
/index
/controller
config.php
databse.php
route.php
~~~
其中/index 应用的index模块
/controller Index模块下的控制器目录
config.php 应用的配置文件
databse.php 应用的数据库配置文件
route.php 应用的路由配置文件
## 4 应用控制器开发
应用控制器是应用调度的入口文件,通常的开发就是在/application/index/controller目录下添加控制器,并调用框架模型和视图等实现业务逻辑。
控制器controller是框架MVC的入口。通常在controller类的方法中调用模型的操作与视图渲染方法。
模型操作见 数据模型文件
视图渲染见 视图渲染文件
其具体开发见 使用范例 [应用控制器操作](http://www.kancloud.cn/zmwtp/tp5/119443)。
进一步的可将前台与后台进行分模块开发。模块开发见 使用范例的[模块开发](http://www.kancloud.cn/zmwtp/tp5/119528)
- 更新记录
- 概述
- 文件索引
- 函数索引
- 章节格式
- 框架流程
- 前:章节说明
- 主:(index.php)入口
- 主:(start.php)框架引导
- 主:(App.php)应用启动
- 主:(App.php)应用调度
- C:(Controller.php)应用控制器
- M:(Model.php)数据模型
- V:(View.php)视图对象
- 附:(App.php)应用启动
- 附:(base.php)全局变量
- 附:(common.php)模式配置
- 附:(convention.php)全局配置
- 附:(Loader.php)自动加载器
- 附:(Build.php)自动生成
- 附:(Hook.php)监听回调
- 附:(Route.php)全局路由
- 附:(Response.php)数据输出
- 附:(Log.php)日志记录
- 附:(Exception.php)异常处理
- 框架工具
- 另:(helper.php)辅助函数
- 另:(Cache.php)数据缓存
- 另:(Cookie.php)cookie操作
- 另:(Console.php)控制台
- 另:(Debug.php)开发调试
- 另:(Error.php)错误处理
- 另:(Url.php)Url操作文件
- 另:(Loader.php)加载器实例化
- 另:(Input.php)数据输入
- 另:(Lang.php)语言包管理
- 另:(ORM.php)ORM基类
- 另:(Process.php)进程管理
- 另:(Session.php)session操作
- 另:(Template.php)模板解析
- 框架驱动
- D:(\config)配置解析
- D:(\controller)控制器扩展
- D:(\model)模型扩展
- D:(\db)数据库驱动
- D:(\view)模板解析
- D:(\template)模板标签库
- D:(\session)session驱动
- D:(\cache)缓存驱动
- D:(\console)控制台
- D:(\process)进程扩展
- T:(\traits)Trait目录
- D:(\exception)异常实现
- D:(\log)日志驱动
- 使用范例
- 服务器与框架的安装
- 控制器操作
- 数据模型操作
- 视图渲染控制
- MVC开发初探
- 模块开发
- 入口文件定义全局变量
- 运行模式开发
- 框架配置
- 自动生成应用
- 事件与插件注册
- 路由规则注册
- 输出控制
- 多种应用组织
- 综合应用
- tp框架整合后台auto架构快速开发
- 基础原理
- php默认全局变量
- php的魔术方法
- php命名空间
- php的自动加载
- php的composer
- php的反射
- php的trait机制
- php设计模式
- php的系统时区
- php的异常错误
- php的输出控制
- php的正则表达式
- php的闭包函数
- php的会话控制
- php的接口
- php的PDO
- php的字符串操作
- php的curl
- 框架心得
- 心:整体结构
- 心:配置详解
- 心:加载器详解
- 心:输入输出详解
- 心:url路由详解
- 心:模板详解
- 心:模型详解
- 心:日志详解
- 心:缓存详解
- 心:控制台详解
- 框架更新
- 4.20(验证类,助手函数)
- 4.27(新模型Model功能)
- 5.4(新数据库驱动)
- 7.28(自动加载)