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
更改访问入口文件的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的运行流程:
- controller获取用户的请求
- controller根据获取的请求调用相应的Model完成状态的读写操作
- controller将Model处理的数据传递给View
- View将数据渲染将结果呈现给用户
参考:
PHP代码审计入门篇二 ——MVC结构审计
TP5.0开发手册
thinkphp5.0学习(四):入口文件、路由模式、路由设置和url生成
thinkphp5.0学习(五): TP5.0控制器