TP架构概述

本文详细介绍了 ThinkPHP V5 框架的基本架构及使用方法,包括 MVC 设计模式、URL 解析、入口文件、应用结构、模块划分、控制器与模型的创建、视图展示、命名空间管理等核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、TP架构概述

MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型(M)、视图(V)、控制器(C),它们各自处理自己的任务。

2、url解析

http://localhost/tp5/public    /index.php    /Index     /Index    /index
——                             入口文件       模块       控制器     方法

3、入口文件

1、文件地址
C:\AppServ\www\tp5\public\index.php
2、作用:负责整个TP的请求

4、应用

1、应用地址
C:\AppServ\www\tp5\application
2、作用:一个应用代表一个网站

5、模块(以前台为例)

1、模块地址
C:\AppServ\www\tp5\application\index
2、作用:网站所有的前台相关都与其有关

3、*新建后台模块
a、在应用目录下(C:\AppServ\www\tp5\application)新建admin目录
b、在admin目录下面新建model、view、和controller
c、在controller目录中新建Index控制器(Index.php//开头字母大写)
d、在Index.php中书写代码

<?php
//申明命名空间
namespace app\admin\controller;//本质就是文件路径
//声明控制器
class Index{

    public function index(){
        return "我是后台的控制器";
    }
}

?>

e、通过地址栏访问

http://localhost/tp5/public   /index.php     /admin     /Index    /Index
——                             入口文件       模块       控制器     方法

6、控制器

1、控制器目录
C:\AppServ\www\tp5\application\index\controller
2、作用:书写业务逻辑
3、新建控制器(以前台为例)
a、前台控制器目录(C:\AppServ\www\tp5\application\index\controller)下新建User.php
b、在控制器中书写代码

<?php

//声明命名空间
namespace  app\index\controller;
//声明控制器
class User{
    //index方法
    public function index(){
        return "我是前台User控制器中的index方法";
    }
}
?>

c、地址栏访问

http://localhost/tp5/public    /index.php    /Index     /user     /index
——                             入口文件       模块       控制器     方法

d、注意:
1、控制器文件名必须首字母大写
2、控制器必须声明命名空间
3、控制器中类名必须和文件名一致

7、操作(方法)

1、操作地址
操作一般都在控制器文件中
2、新建一个操作(以前台Index控制器为例)
1、打开前台Index控制器
(C:\AppServ\www\tp5\application\index\controller/Index.php)
2、在控制器中新建test方法

<?php
namespace app\index\controller;
//一个控制器类
class Index
{
//框架自带的方法
   public function index()
   {
       return '<style type="text/css">*{ padding: 0; margin: 0; } .think_default_text{ padding: 4px 48px;} a{color:#2E5CD5;cursor: pointer;text-decoration: none} a:hover{text-decoration:underline; } body{ background: #fff; font-family: "Century Gothic","Microsoft yahei"; color: #333;font-size:18px} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.6em; font-size: 42px }</style><div style="padding: 24px 48px;"> <h1>:)</h1><p> ThinkPHP V5<br/><span style="font-size:30px">十年磨一剑 - 为API开发设计的高性能框架</span></p><span style="font-size:22px;">[ V5.0 版本由 <a href="http://www.qiniu.com" target="qiniu">七牛云</a> 独家赞助发布 ]</span></div><script type="text/javascript" src="https://tajs.qq.com/stats?sId=9347272" charset="UTF-8"></script><script type="text/javascript" src="https://e.topthink.com/Public/static/client.js"></script><think id="ad_bd568ce7058a1091"></think>';
   }
//新建的方法
   public function test(){
       return "我是用户自己创建的方法";
   }
}



3、地址栏访问

http://localhost/tp5/public/index.php       /index     /index     /test
——                             入口文件       模块       控制器     方法

8、模型(数据模型)

1、数据模型地址(C:\AppServ\www\tp5\application\index\model)
2、作用:负责数据库相关的处理

9、视图(页面)

1、视图地址
(C:\AppServ\www\tp5\application\index\view)
2、作用:其实就是网站页面

10、命名空间

1、与目录有关(以前台index控制器命名空间为例)
(C:\AppServ\www\tp5\application\index\controller)
———————— namespace app\index\controller;

11、跨控制器调用

三种方法

<?php
namespace app\index\controller;

use \app\index\controller\User;

use \app\admin\controller\Index as AdminIndex;//<-又引入一个要改名
//****本身为Index控制器类,再引入一个Index就会重名***
class Index    //<-Index控制器
{
    public function index()
    {
        return '<style type="text/css">*{ padding: 0; margin: 0; } .think_default_text{ padding: 4px 48px;} a{color:#2E5CD5;cursor: pointer;text-decoration: none} a:hover{text-decoration:underline; } body{ background: #fff; font-family: "Century Gothic","Microsoft yahei"; color: #333;font-size:18px} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.6em; font-size: 42px }</style><div style="padding: 24px 48px;"> <h1>:)</h1><p> ThinkPHP V5<br/><span style="font-size:30px">十年磨一剑 - 为API开发设计的高性能框架</span></p><span style="font-size:22px;">[ V5.0 版本由 <a href="http://www.qiniu.com" target="qiniu">七牛云</a> 独家赞助发布 ]</span></div><script type="text/javascript" src="https://tajs.qq.com/stats?sId=9347272" charset="UTF-8"></script><script type="text/javascript" src="https://e.topthink.com/Public/static/client.js"></script><think id="ad_bd568ce7058a1091"></think>';
    }


    public function test(){
        return "我是用户自己创建的方法";
    }

    
    public function diaoyong(){
        //调用当前模块User控控制器
        $model=new \app\index\controller\User;
        echo $model->index();

        echo "<hr>";


        //使用use
        $model=new User;
        echo $model->index();

        echo"<hr>";


        //使用系统方法
        $model=controller('User');
        echo $model->Index();

    }

    //调用后台模块
    public function diaoyongs(){
        //使用命名空间
        $model=new \app\admin\controller\Index;
       echo  $model->index();

       echo "<hr>";
       //使用use
       $model=new AdminIndex();
       echo $model->index();

        echo "<hr>";
        //使用系统方法
        $model=controller('admin/Index');
        echo $model->index();


    }
}


12、调用方法(跨方法调用)

1、调用当前控制器的test方法

 public function fangfa(){
        //测试此方法
        echo "123";

            echo "<hr>";

        //调用当前控制器的test方法
        echo $this->test();

             echo "<hr>";

        //使用面向对象技术
        echo self::test();

              echo"<hr>";

        //使用系统方法
        echo action('test');


2、调用User控制器下的index方法

  //调用其他控制器中的方法
    public function fangfas(){
      //命名空间
        $model=new \app\index\controller\User;
        echo $model->index();

        echo"<hr>";
      //系统方法
        echo action('User/index');

    }


3、调用后台模块下Index控制器index方法

 //调用后台模块的index方法
    public function fangfass(){
      //命名空间
        $model=new \app\admin\controller\Index;
        echo $model->index();
        echo"<hr>";
     //系统方法
        echo action('admin/Index/index');
    }

13、主要分析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\conventon.php)
4、运行应用(C:\AppServ\www\tp5\thinkphp\library\think\App.php)下的run方法;
1、第一步:加载当前控制器中的initCommon()方法
2、第二部:加载当前控制器中init()方法
加载各种配置文件
加载公共文件
加载语言包
3、第三部:设置时区
4、第四部:加载当前控制器routeCheck()方法路由检测
5、第五步:调用控制器中的exec方法
根据用户请求进行分发处理
6、第六步:根据不同请求类型记载对应文件module方法
加载到对应的控制器和对应的方法
5、响应输出
】、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值