ThinkPHP5.0中的MVC学习

本文详细介绍了ThinkPHP5.0框架的目录结构,包括应用目录、公共模块、模块、控制器、模型和视图等,并解析了URL访问规则,包括普通模式和路由模式。同时,讲解了如何更改入口文件URL,以及如何新建模块、控制器和模型。最后,阐述了MVC模式的工作流程及其在ThinkPHP5.0中的应用。
摘要由CSDN通过智能技术生成

ThinkPHP5.0框架目录:
project  应用部署目录

├─application           应用目录(可设置)
│  ├─common             公共模块目录(可更改)
│  ├─index              模块目录(可更改)
│  │  ├─config.php      模块配置文件
│  │  ├─common.php      模块函数文件
│  │  ├─controller      控制器目录
│  │  ├─model           模型目录
│  │  ├─view            视图目录
│  │  └─ ...            更多类库目录
│  ├─command.php        命令行工具配置文件
│  ├─common.php         应用公共(函数)文件
│  ├─config.php         应用(公共)配置文件
│  ├─database.php       数据库配置文件
│  ├─tags.php           应用行为扩展定义文件
│  └─route.php          路由配置文件

├─extend                扩展类库目录(可定义)
├─public                WEB 部署目录(对外访问目录)
│  ├─static             静态资源存放目录(css,js,image)
│  ├─index.php          应用入口文件
│  ├─router.php         快速测试文件
│  └─.htaccess          用于 apache 的重写

├─runtime               应用的运行时目录(可写,可设置)
├─vendor                第三方类库目录(Composer)

├─thinkphp              框架系统目录
│  ├─lang               语言包目录
│  ├─library            框架核心类库目录
│  │  ├─think           Think 类库包目录
│  │  └─traits          系统 Traits 目录
│  ├─tpl                系统模板目录
│  ├─.htaccess          用于 apache 的重写
│  ├─.travis.yml        CI 定义文件
│  ├─base.php           基础定义文件
│  ├─composer.json      composer 定义文件
│  ├─console.php        控制台入口文件
│  ├─convention.php     惯例配置文件
│  ├─helper.php         助手函数文件(可选)
│  ├─LICENSE.txt        授权说明文件
│  ├─phpunit.xml        单元测试配置文件
│  ├─README.md          README 文件
│  └─start.php          框架引导文件

├─build.php             自动生成定义文件(参考)
├─composer.json         composer 定义文件
├─LICENSE.txt           授权说明文件
├─README.md             README 文件
├─think                 命令行入口文件
URL访问规则:

0x01:普通模式(PATH_INFO)
ThinkPHP5.0在没有启用路由的情况下典型的URL访问规则是:

http://serverName/index.php(或者其它应用入口文件)/模块/控制器/控制方法/[参数名/参数值...]
http://127.0.0.1/thinkphp_5.0.15_full/public/index.php/index/index/index
											 入口文件/模块名/控制器名/控制方法名						

在ThinkPHP5.0框架中,在url地址栏如果不写模块、控制器、和操作名(控制方法名),默认访问index模块下的index控制器下的index操作。可以在config.php中修改

0x02:路由模式下的访问
设置路由格式:

Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)','变量规则(数组)');

静态路由 :

//注册路由test 访问到index模块下的index控制器下的test的方法
Route::rule('test','index/index/test');

我们访问http://serverName/test会自动路由到http://serverName/index/index/test

给路由带参数:

route.php中:
//注册带参数路由
Route::rule('course/:id','index/index/course');

index.php中:
function course(){
            return input('id');
        }

我们访问http://serverName/course/1会自动路由到http://serverName/index/index/course/id/1

有关路由的更多TP手册中的路由介绍



更改访问入口文件的URL:

因为入口文件:index.php在public目录中,每次访问都要使public出现有点麻烦,可以将index.php移动到主目录下(/thinkphp_5.0.15_full下)
修改index.php中的路径:

<?php
// [ 应用入口文件 ]

//define('APP_NAME','index');
// 定义应用目录
define('APP_PATH', __DIR__ . '/./application/');
// 加载框架引导文件
require __DIR__ . '/./thinkphp/start.php';

访问入口文件变为:http://127.0.0.1/thinkphp_5.0.15_full/index.php

当然,还可以在设置网站域名的时候将目录路径包括到public目录
如:http://www.test.com/index.php



新建模块:

新建模块跟build.php文件有关:

<?php
return [
    // 生成应用公共文件
    '__file__' => ['common.php', 'config.php', 'database.php'],

    // 定义demo模块的自动生成 (按照实际定义的文件名生成)
    'demo'     => [
        '__file__'   => ['common.php'],
        '__dir__'    => ['behavior', 'controller', 'model', 'view'],
        'controller' => ['Index', 'Test', 'UserType'],
        'model'      => ['User', 'UserType'],
        'view'       => ['index/index'],
    ],
    // 其他更多的模块定义
];

生成一个admin模块的指令如下:

php think build --module admin

表示自动生成admin模块,自动生成的模块目录包含了config、controller、model、view目录 以及common.php、config.php, database.php公共文件


新建控制器(Controller):

1.在前台控制器目录下(\application\index\controller)
新建控制器文件User.php

2.编写User.php文件

<?php
namespace app\index\controller;	//命名空间

class User	//控制器
{
    public function index()	//默认的控制方法
    {
        echo "566";
        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 hello(){//控制方法2
        echo "9999";
    }
}

3.访问User控制器下的hello控制方法:
http://127.0.0.1/thinkphp_5.0.15_full/public/index.php/index/user/hello

4.注意:

  • 控制器名和控制器文件名要一致

  • 控制器文件名必须首字母大写,文件名采用驼峰命名(UserInfo)

  • 命名空间和控制器路径要对应
    namespace app\index\controller;
    E:\phpstudy\PHPTutorial\WWW\thinkphp_5.0.15_full\application\index\controller

  • 假如采用文件名驼峰命名法:UserInfo.php,在URL中要http://127.0.0.1/thinkphp_5.0.15_full/index.php/index/user_info/index才能访问到,也就是注意添加下划线


新建模型(Model)

application/index目录下面创建一个model目录,然后添加XXX.php文件

<?php
namespace app\index\model;
use Think\Model;
/**
 * 基础model
 */
class XXX extends \think\Model{
   //增加数据
       public function addData($data){
        $id=$this->add($data);
        return $id;
    }
   //修改数据
    public function editData($map,$data){
        $result=$this->where($map)->save($data);
        return $result;
    }
   //删除数据
    public function deleteData($map){
        $result=$this->where($map)->delete();
        return $result;
    }
}

新建视图(View)

…懒





MVC

MVC模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。

  • 模型Model – 管理大部分的业务逻辑和所有的数据库逻辑。模型提供了连接和操作数据库的抽象层。
  • 控制器Controller - 负责响应用户请求、准备数据,以及决定如何展示数据。
  • 视图View – 负责渲染数据,通过HTML方式呈现给用户。
    在这里插入图片描述
    在这里插入图片描述

由上面两幅图可清楚看到Controller起到承上启下的作用

mvc的运行流程:
  1. controller获取用户的请求
  2. controller根据获取的请求调用相应的Model完成状态的读写操作
  3. controller将Model处理的数据传递给View
  4. View将数据渲染将结果呈现给用户





参考:

PHP代码审计入门篇二 ——MVC结构审计
TP5.0开发手册
thinkphp5.0学习(四):入口文件、路由模式、路由设置和url生成
thinkphp5.0学习(五): TP5.0控制器

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值