URL解析模式
http://serverName/index.php/模块/控制器/操作/参数值
1.index.php为入口文件,在public目录内的index.php文件
2.模块在application目录下默认有一个index目录,这就是一个模块
3.而在index目录下有一个controller控制器目录的Index.php控制器[controller中的必须大写!!]
4.Index.php控制器的类名也必须是class Index,否则错误
5.而操作就是控制器class Index里面的方法 如index()或hello()
6.完整形式为 public/index.php/index/index/index
controller中的Index.php中的Index(){}
1.在application目录下创建一个test目录(模块)
2.在test模块下创建控制器目录controller,并在旗下创建Abc.php(控制器)
application[文件夹]
index[文件夹]
controller[文件夹]
Index.php
test[文件夹]
controller[文件夹]
Abc.php
//Abc.php里面:
namespace app\test\controller;
class Abc
{
publci function eat()
{
return 'eat!';
}
}
访问localhost/tp5.1/public/index.php/test/abc/eat
class Abc
{
publci function eat($ who='隔壁老王')
{
return $who.'eat!';
}
}
localhost/tp5.1/public/index.php/test/abc/eat/who/主人老李
test:模块
abc:控制器
eat:操作
who:参数
模块结构
1.模块下的类库文件统一命名为app\模块名
2,比如app\index\controller\Index
3.多模块设计在URL访问时,必须指定相应的模块名,比如public/test/abc/eat.
4.如果你只有test这一个模块的话,你可以绑定模块,从而 省略写法
5.pubic/index.php的文件,追加:
原本:
// 执行应用并响应
Container::get('app')->run()->send();
绑定一个模块:
// 执行应用并响应
Container::get('app')->bind('test')->run()->send();
6.此时URL调用就变成了public/eat,但其他控制器无法访问
二.空模块
1.可以通过环境变量设置空目录,将不存在的目录统一指向指定目录
2.在config目录下的app.php修改,
//默认的空模块名
'empty_module'=> 'index'
三.单一模块
1.如果你的应用只有一个模块,那可以直接设置单模块
2.在config目录下的app.php可以修改
// 是否支持多模块
'app_multi_module' => false,
改完后可以直接在application下建controller,在controller下建Index.php
Index.php里面
namespace app\controller
class Index
{
public function index()
{
return '单一模块'
}
}
3.目录结构可变成
4.URL地址 public/index/one,即控制器/操作
5.单一模块的命名空间也变更为:app/controller
四.环境变量
1.Thinkphp5.1提供了一个类库Env来获取环境变量
return Env::get(‘app_path’);
系统路径 | Env参数名称 |
---|---|
应用根路径 | root_path |
应用目录 | app_path |
框架目录 | think_path |
配置目录 | config_path |
扩展目录 | extend_path |
composer目录 | vender_path |
运行缓存目录 | runtime_path |
路由目录 | route_path |
当前模块目录 | module_path |
eg.
public function index()
{
return '单一模块!:'.Env::get('app_path');
}