方法调用
1、调用当前控制器的test方法
1、使用面向对象的技术
echo $this->test();
echo self::test();
echo Index::test();
2、使用系统方法
echo action('test');
2、调用User控制器下的index方法
1、命名空间
$model=new \app\index\controller\User;
echo $model->index();
2、使用系统方法
echo action('User/index');
3、调用后台模块下Index控制器index方法
1、命名空间
$model=new \app\admin\controller\Index;
echo $model->index();
2、使用系统方法
echo action('admin/Index/index');
demo如下:
<?php
namespace app\index\controller;
class Index
{
public function test(){
return "我是用户自己创建的方法";
}
//调用当前控制器的test方法
public function call()
{
echo $this->test();
echo "<hr>";
echo self::test();
echo "<hr>";
echo Index::test();
echo "<hr>";
echo action('test');
}
//调用其他控制器的方法
public function fangfa()
{
//使用命名空间
$model=new \app\index\controller\User;
echo $model->index();
//使用系统函数调用
echo "<hr>";
echo action('user/index');
}
//调用后台模块其他控制器的方法
public function fangfas()
{
//使用命名空间
$model=new \app\admin\controller\Index;
echo $model->index();
//使用系统函数调用
echo "<hr>";
echo action('admin/index/index');
}
}
框架加载流程(主要分析TP执行流程)
1、入口文件(C:\AppServ\www\tp5\public\index.php)
作用:
1)定义目录常量2)加载框架引导目录
2、加载框架的引导文件(C:\AppServ\www\tp5\thinkphp\start.php)
作用:
1) 引导基础文件
2) 对应用进行运转
3、加载框架的基础引导文件(C:\AppServ\www\tp5\thinkphp\base.php);
作用:
1) 加载系统常量
2) 引入loader类 (C:\AppServ\www\tp5\thinkphp\library\think\loader.php)
3) 引入环境变量
4) 注册自动记载机制
5) 注册异常处理机制(C:\AppServ\www\tp5\thinkphp\library\think\Error.php)
6) 记载惯例配置(C:\AppServ\www\tp5\thinkphp\convention.php)
4、运行应用(C:\AppServ\www\tp5\thinkphp\library\think\App.php) 下的run方法;
1、第一步: 加载当前控制器中 initCommon() 方法
2、第二步: 加载当前控制器中 init() 方法
1、加载各种配置文件
2、加载公共文件
3、加载语言包
3、第三步: 设置时区
4、第四步: 加载当前控制器 routeCheck() 方法 路由检测
5、第五步: 调用控制器中exec方法
根据用户请求进行分发处理
6、第六步: 根据不同请求类型记载对应文件 module方法
加载到对应的控制器和对应方法
5、响应输出
用户看到的所有界面就加载出来了