TP架构的概述:
1、Think PHP使用了MVC模式
2、URL解析
http:// www.tp.com /index.php /index /index/ /index
协议 域名 入口文件 模块 控制器 方法
3、入口文件:
public/index.php
作用:负责整个TP的请求处理
4、应用:
1、应用地址:application
2、作用:一个应用代表一个网站
5、模块(前台模块):
1、模块地址:appliction/index;
2、作用: 网站所有的前台页面都与其相关
3、新建模块:
a、在appliction/下新建admain模块
B、在admian目录下新建 M、V、C目录
c、在Controller目录中新建控制器
命名空间:namespace app\admain\controller;
6、控制器:
1、控制器目录:appliction/index/controller
2、作用: 书写业务逻辑
3、新建控制器:
<?php
新建控制器:
--------------------------------
namespace app\index\controller;//声明命名空间
//声明控制器
class User{
//index 方法
public function index(){
return "我是前台User控制器中的index方法";
}
}
?>
---------------------------------
访问:http://www.tp.com/index.php/index/User/index
----------------------------------
注意:
a、控制器的文件名必须首字母大写
b、控制器必须声明命名空间
c、控制器中类名必须和文件名一直
7、操作(方法)
1、操作地址
操作一般都在控制器的文件中
2、新建一个操作(以前台Index控制器为例)
a、打开前台Index控制器
b、在控制器中新建test方法:
public function test()
{
return "这是新建的test方法"
}
访问:http://www.tp.com/index.php/index/Index/test
8、模型(数据模型)
1、model目录
2、作用: 负责数据库相关的处理
9、视图(页面)
1、view目录
2、作用: 网站页面
10、命名空间
1、命名空间与目录有关:app\index\controller;
11、夸控制器调用
1、同一模块:public function diaoyong()
{
//调用前台User控制器
//方法1、
$model=new \app\index\controller\User;
echo $model->Index();
//方法2、
$model= new User;
echo $model->index();
//方法3、
$model= controller('User');
echo $model->index()
}
2、不同模块:public function dys()
{
//二、调用其它模块的控制器
//1、使用命名空间
$model=new \app\admain\controller\Index;
echo $model->Index();
echo "<hr>";
//2、
$model= new AdmainIndex(); //别名
echo $model->index();
echo "<hr>";
//方法3、
$model= controller('admain/Index');
echo $model->index();
}
夸模块的话,在第二种方法里,需要给控制器取别名
use \app\admain\controller\Index as AdmainIndex;
12、当前控制器调用
public function fanfa()
{
//return '123';
//调用当前控制器的方法
echo $this->test();
echo '<hr>';
echo self::test();
echo "<hr>";
echo Index::test();
echo "<hr>";
echo action('test');
}
13、调用不同控制器下的方法
public function fanfas()
{
$model= new \app\index\controller\User;
echo $model->index();
echo "<hr>";
echo action('User/index');
}
14、调用不同模块下的控制器方法
//不同模块下控制器方法的调用
public function fanfat()
{
$model= new \app\admain\controller\Index;
echo $model->index();
echo "<hr>";
echo action('admain/Index/index');
}
15、主要分析TP执行流程
1、入口文件(public/index.php)
1)、定义常量
2)、加载框架引导目录
2、加载框架引导文件(thinkphp/start.php)
1)、加载基础文件
3、加载框架的基础引导文件(thinkphp/base.php)
1)、加载系统常量
2)、引入loader类(thinkphp/library/think/loader.php)
3)、引入环境变量
4)、注册自动加载 和 异常处理
4、运行应用(thinkphp/library/think/App.php)下面的run方法
1)、加载当前控制器中 initCommon方法
2)、加载当前控制器中 init()方法
a、加载配置文件
b、加载公共文件
c、加载语言包
3)、设置时区
4)、检测路由
5)、调用控制器中exec方法
a、根据用户请求分发
6)、根据不同的请求类型加载方法对应文件 module方法
加载到对应的控制器和对应方法
5、响应输出