目录结构
www WEB部署目录(或者子目录)
├─app 应用目录
│ ├─controller 控制器目录
│ ├─model 模型目录
│ ├─ ... 更多类库目录
│ │
│ ├─common.php 公共函数文件
│ └─event.php 事件定义文件
│
├─config 配置目录
│ ├─app.php 应用配置
│ ├─cache.php 缓存配置
│ ├─console.php 控制台配置
│ ├─cookie.php Cookie配置
│ ├─database.php 数据库配置
│ ├─filesystem.php 文件磁盘配置
│ ├─lang.php 多语言配置
│ ├─log.php 日志配置
│ ├─middleware.php 中间件配置
│ ├─route.php URL和路由配置
│ ├─session.php Session配置
│ ├─trace.php Trace配置
│ └─view.php 视图配置
│
├─view 视图目录
├─route 路由定义目录
│ ├─route.php 路由定义文件
│ └─ ...
│
├─public WEB目录(对外访问目录)
│ ├─index.php 入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于apache的重写
│
├─extend 扩展类库目录
├─runtime 应用的运行时目录(可写,可定制)
├─vendor Composer类库目录
├─.example.env 环境变量示例文件
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
控制器
打开localhost:8506默认有一个响应这个响应来自app/controller/index.php下的index方法
修改返回的内容为:Hello World
public function index()
{
return 'Hello World';
}
看到上面的结果证明确实是走的那个接口,我们访问http://localhost:8506/index
、http://localhost:8506/index/index
以及http://localhost:8506/index.php/index/index
都可以正常显示Hello World。
我们新建一个index2方法
public function index2()
{
return '我是index2方法';
}
访问http://localhost:8506/index/index2
后面我们可以根据这种方式进行自定义接口或者视图了
路由
我们看到还有一个hello方法,直接访问index/hello试试
报错了为啥呢,因为使用了路由,我们先关闭路由
再次访问就可以了
我们再次开启路由,找到route/app.php,看到如下代码
我们按照路由格式访问hello/xxx,xxx指向name参数,比如guojing
还有一个think我们也可以直接访问
配置文件
修改.example.env为.env
重新访问,可以看到红框中的标记,点开,就是日志跟踪,开发的时候用来排查错误的
APP_DEBUG = false
他就消失了,这种方式适合线上生产环境
开发模式下建议改成true
如何读取.env里面的配置呢?
比如我们想读取database下的hostname参数
修改index.php
use think\facade\Env;
public function getConfig()
{
return Env::get("database.hostname");
}
如果我们想获取config下database.php下的connections下的mysql下的hostname
use think\facade\Config;
public function getConfig()
{
return Config::get("database.connections.mysql.hostname");
}
也可以判断文件是否存在
use think\facade\Config;
use think\facade\Env;
public function getConfig()
{
echo Env::has('database.hostname') ? '存在' : "不存在";
echo "<br>";
echo Config::has('database.connections.mysql.hostname') ? '存在' : "不存在";
}
多环境配置
V6.0.8+
版本开始,可以支持定义多个环境变量配置文件,配置文件命名规范为
.env.example
.env.testing
.env.develop
public/index.php
$http = (new App())->setEnvName('develop')->http;