## 初始化 - 文件名称:_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)获得如下效果 ![](https://box.kancloud.cn/9a88645c2c61adbe1953a7603c3ae5d2_457x94.png) - 可以看到,set.php文件并不会执行,也不会运行数据库语句 - 通常情况下如果是想自定义数据(如JSON数据),在目录中仅创建_init.php文件就够了 ## 自定义数据查询 设置文件/html/www/demo/test/init/demo2/_init.php内容如下 ~~~ <?php return function (){ if($this->isPost()){ EXITJSON(0, '获取到了POST数据'); } $area_list = $this->db('area')->select("id", "parent_id", "title")->limit(3)->get(); EXITJSON(1, '城市数据', $area_list); }; ~~~ 打开网址[http://demo.tphp.com/test/init/demo2](http://demo.tphp.com/test/init/demo2)获得如下效果 ![](https://box.kancloud.cn/59d3d969fd4b3ee2da81f83ff8b8800a_541x118.png) - 通常情况下{"code":0, "msg":"err"}或{"code":1, "msg":"ok", "data":"Tphp"}数据格式基本够用了 - 特殊情况下,也可以以字符串、对象或数组直接返回,请看demo3和demo4 设置文件/html/www/demo/test/init/demo3/_init.php内容如下 ~~~ <?php return function (){ $area_list = $this->db('area')->select("id", "parent_id", "title")->limit(3)->get(); // 直接返回对象 return $area_list; }; ~~~ 打开网址[http://demo.tphp.com/test/init/demo3](http://demo.tphp.com/test/init/demo3)获得如下效果 ![](https://box.kancloud.cn/f90c7bd4737e4a6cb8d10fa42dccb67c_507x95.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)获得如下效果 ![](https://box.kancloud.cn/43a776ff6ef8cad1ee970ce4be65a819_466x92.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)获得如下效果 ![](https://box.kancloud.cn/9bb932844b9e88d2f236699250de7551_566x466.png) 接下来就靠自己的思路发挥 "初始化" 设计了 ## 跟路径初始化 - 同样是_init.php文件,只不过是放在根目录,也可以不创建,该文件是处理所有页面信息。 - 引用类格式也是固定的,一定是InitController,否则调用无效果 设置文件/html/www/demo/_init.php内容如下 ~~~ <?php use App\Http\Controllers\Controller; class InitController extends Controller { function __construct($tpl_path = "", $tpl_type = "", $args = []) { dump($tpl_path); dump($tpl_type); dump($args); } } ~~~ 再次打开网址[http://demo.tphp.com/test/init/demo5](http://demo.tphp.com/test/init/demo5)获得如下效果 ![](https://box.kancloud.cn/f3c49068dcda897d9fca781e83d4d2e1_677x577.png) 为了能后续示例,将文件/html/www/demo/_init.php内容注释如下 ~~~ <?php use App\Http\Controllers\Controller; class InitController extends Controller { function __construct($tpl_path = "", $tpl_type = "", $args = []) { // dump($tpl_path); // dump($tpl_type); // dump($args); } // 处理后运行 // public function __last(){ // // } } ~~~