二、ThinkPHP基本结构

1、ThinkPHP目录结构

重点目录和文件
application-------------------业务代码(MVC所在目录)
config------------------------配置文件
public------------------------应用web虚拟主机指向的目录
route-------------------------路由定义目录
runtime-----------------------框架自动生成的目录(在Linux中要设置可写权限)
thinkphp----------------------thinkphp核心代码
vendor------------------------第三方类库
composer.json-----------------composer配置文件
think-------------------------think提供的命令行工具

2、thinkphp命名规范

1、目录使用小写加下划线
2、类的文件名以命名空间定义,且命名空间的路径和类库文件所在目录一致
3、方法和属性命名使用驼峰命名法
4、常量以大写字母加下划线命名
5、配置参数以小写字母加下划线命名
6、环境变量定义以大写字母加下划线命名
7、数据表和字段采用小写加下划线命名

3、路由

3.1路由介绍

thinkphp有两种路由规则

1、pathinfo模式
2、自定义路由模式
如设置了自定义路由,则使用自定义路由的方式访问,如没有设置自定义路由,则默认使用pathinfo模式访问

3.2隐藏index.php文件

1、打开apache的重写模块
LoadModule rewrite_module modules/mod_rewrite.so

2、虚拟主机中允许重写

<VirtualHost *:80>
	# 设置网站目录
	DocumentRoot "${INSTALL_DIR}/www/tp5.1/public"
	# 设置网站域名
	ServerName www.tp.com
	# 错误日志
	ErrorLog "${INSTALL_DIR}/www/tp5.1/logs/error.log"
	# 成功日志
	CustomLog "${INSTALL_DIR}/www/tp5.1/logs/access.log" combined
	# 设置目录访问权限
	<Directory D:/wampserver/www/tp5.1/public>
	    # 指定目录启用
	    Options Indexes FollowSymLinks 
	    # 是否允许使用.htaccess文件
	    AllowOverride All (更改此处)
	    # 访问目录权限
	    Require all granted
	</Directory>
</VirtualHost>

3、修改入口文件(public/.htaccess)

RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

3.3路由相关配置

1、强制路由 在config/app.php中配置文件中设置
'url_route_must' => true,
//会强制使用路由,这种方式下面必须严格给每一个访问地址定义路由规则

2、路由缓存

'route_check_cache' => true
//开启后会提高性能,但在开发阶段不要开启

3、完全匹配

'route_complete_match'   => true,

3.4定义路由

3.4.1 路由格式
Route::请求方式(‘路由表达式’,function());
or
Route::请求方式(‘路由表达式’,‘模块名/控制器名/方法名’);
//定义好路由控制后,原pathinfo就失效了

Route::请求方式(‘路由表达式’,‘模块名/控制器名/方法名’) -> name('name');
//为路由设置别名

3.4.2 请求类型

Route::get(); 		// 定义GET请求路由规则    查询
Route::post();  	// 定义POST请求路由规则   添加
Route::put(); 	    // 定义PUT请求路由规则    修改
Route::delete();    // 定义DELETE请求路由规则 删除
Route::any(); 		// 所有请求都支持的路由规则  框架提供 不推荐

3.4.3 路由参数

//必选参数
Route::请求方式(‘路由表达式/:参数’,匿名函数);
//可选参数
Route::请求方式(‘路由表达式/[:参数]’,匿名函数);
例:
Route::get('path/[:name]',function($name){
	return 'my name is '.$name;
});

3.5路由分组

Route::group('group_name',function(){
	Route::get('name1','path1');
	Route::post('name1','path1');
	Route::delete('name1','path1');
})
//分组路由嵌套
Route::group(['method' => 'get'],function(){
	Route::group('group_name',function(){
		Route::get('name1','path1');
		Route::post('name1','path1');
		Route::delete('name1','path1');
	})
})

4、控制器

4.1、相关配置

'controller_suffix' => false,
// 表示默认情况下,控制器无特殊后缀。例如 Index控制器,文件名为Index.php

'controller_suffix' => 'Controller',
// 表示控制器以Controller为后缀。例如Index控制器,文件名为IndexController.php

4.2命令行创建分组和控制器

php thinlk bulid --moudle name      //创建分组
php think make:controller --plain module_name/controller_name      //创建控制器

4.3、开启调试模式

方法一:
'app_debug' => true,

方法二:(推荐方法)
在根目录创建.vue文件

APP_DEBUG=true

4.4、前置操作

设置beforeActionListh属性可以指定某个方法作为其他方法的前置操作,数组键名为需要调用的前置方法名,无值的话为当前控制器下所有方法的前置操作
public $beforeActionList = [
	'before' => ['fun1','fun2'];
]

public function before(){
	return 'I'm before';
}
public function fun1(){
	return 'I'm fun1';
}
public function fun2(){
	return 'I'm fun2';
}

4.5、页面跳转

thinkphp的 \think\controller 类内置了两个跳转方法success和error,用于页面跳转提示。
public function fun(){
	return $this -> success('success',url('route	'));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值