## 初始化
- 文件名称:_init.php
> 它是第二部执行步骤,先是获取data.php中的配置(但并不执行数据库语句操作)
> 可以把它看做预处理,多用于数据执行前验证或api数据
## 代码示例
设置文件/html/www/demo/test/init/demo1/data.php内容如下
```
<?php
echo "<div>正在执行data.php文件</div>";
return [
'type' => 'sql',
'config' => [
'table' => 'area',
'field' => [
'id',
'title'
],
'limit' => 2
],
];
```
设置文件/html/www/demo/test/init/demo1/_init.php内容如下
```
<?php
return function (){
exit("程序到这里就结束了");
};
```
设置文件/html/www/demo/test/init/demo1/set.php内容如下
```
<?php
return function ($data){
dump("恭喜执行到了set.php文件");
return $data;
};
```
打开网址[http://demo.tphp.com/test/init/demo1](http://demo.tphp.com/test/init/demo1)获得如下效果![](/static/plugins/tphp/help/module/init/demo1.png)
- 可以看到,set.php文件并不会执行,也不会运行数据库语句
- 通常情况下如果是想自定义数据(如JSON数据),在目录中仅创建_init.php文件就够了
## 自定义数据查询
设置文件/html/www/demo/test/init/demo2/_init.php内容如下
```
<?php
return function (){
if($this->isPost()){
EXITJSON(0, '获取到了POST数据');
}
$areaList = $this->db('area')->select("id", "parent_id", "title")->limit(3)->get();
EXITJSON(1, '城市数据', $areaList);
};
```
打开网址[http://demo.tphp.com/test/init/demo2](http://demo.tphp.com/test/init/demo2)获得如下效果![](/static/plugins/tphp/help/module/init/demo2.png)
- 通常情况下{"code":0, "msg":"err"}或{"code":1, "msg":"ok", "data":"TPHP"}数据格式基本够用了
- 特殊情况下,也可以以字符串、对象或数组直接返回,请看demo3和demo4
设置文件/html/www/demo/test/init/demo3/_init.php内容如下
```
<?php
return function (){
$areaList = $this->db('area')->select("id", "parent_id", "title")->limit(3)->get();
// 直接返回对象
return $areaList;
};
```
打开网址[http://demo.tphp.com/test/init/demo3](http://demo.tphp.com/test/init/demo3)获得如下效果![](/static/plugins/tphp/help/module/init/demo3.png)
设置文件/html/www/demo/test/init/demo4/_init.php内容如下
```
<?php
return function (){
// 直接返回字符串
return "我有一个名字,叫做字符串。";
};
```
打开网址[http://demo.tphp.com/test/init/demo4](http://demo.tphp.com/test/init/demo4)获得如下效果![](/static/plugins/tphp/help/module/init/demo4.png)
如果想要获取更多的配置信息使用dump($this)即可,示例代码demo5
设置文件/html/www/demo/test/init/demo5/_init.php内容如下
```
<?php
return function (){
dump($this);
};
```
打开网址[http://demo.tphp.com/test/init/demo5](http://demo.tphp.com/test/init/demo5)获得如下效果![](/static/plugins/tphp/help/module/init/demo5.png)
接下来就靠自己的思路发挥 "初始化" 设计了
## 跟路径初始化
- 同样是_init.php文件,只不过是放在根目录,也可以不创建,该文件是处理所有页面信息。
- 引用类格式也是固定的,一定是InitController,否则调用无效果
设置文件/html/www/demo/_init.php内容如下
```
<?php
use App\Http\Controllers\Controller;
class InitController extends Controller {
function __construct($tplPath = "", $tplType = "", $args = []) {
dump($tplPath);
dump($tplType);
dump($args);
}
}
```
再次打开网址[http://demo.tphp.com/test/init/demo5](http://demo.tphp.com/test/init/demo5)获得如下效果
![](/static/plugins/tphp/help/module/init/demo5_2.png)
为了能后续示例,将文件/html/www/demo/_init.php内容注释如下
```
<?php
use App\Http\Controllers\Controller;
class InitController extends Controller {
function __construct($tplPath = "", $tplType = "", $args = []) {
// dump($tplPath);
// dump($tplType);
// dump($args);
}
// 处理后运行
// public function __last(){
//
// }
}
```