Tp5.0方法调用和框架加载流程

方法调用

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、响应输出
    用户看到的所有界面就加载出来了

Leave a comment

您的邮箱地址不会被公开。 必填项已用 * 标注