Thinkphp5.0实战开发------自动生成目录结构

来源:互联网 发布:log4j json格式化 编辑:程序博客网 时间:2024/09/21 06:36

前言

ThinkPHP5.0 具备自动创建功能,可以用来自动生成需要的模块及目录结构和文件等,自动生成主要调用\think\Build 类库。ThinkPHP5.0中模块文件夹在application下,默认只有index模块,我们可以根据需要自动生成模块,模块文件夹中的内容可以自己在build.php文件进行定义。下面介绍两种自动生成目录结构的方法。

方法:

       首先,我们看下build.php文件中的内容:

<?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2006~2016 http://thinkphp.cn All rights reserved.// +----------------------------------------------------------------------// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )// +----------------------------------------------------------------------// | Author: liu21st <liu21st@gmail.com>// +----------------------------------------------------------------------return [    // 生成应用公共文件    '__file__' => ['common.php', 'config.php', 'database.php'],    // 定义demo模块的自动生成 (按照实际定义的文件名生成)    'demo'     => [        '__file__'   => ['common.php'],        '__dir__'    => ['behavior', 'controller', 'model', 'view'],        'controller' => ['Index', 'Test', 'UserType'],        'model'      => ['User', 'UserType'],        'view'       => ['index/index'],    ],    // 其他更多的模块定义];

从上面的代码中,我们可以看出自动默认生成的模块名称是demo。demo文件夹下有文件common.php,以及四个文件夹:behavior,controller,model,view。controller文件夹下有:Index.php,Test.php,UserType.php;model文件夹下有:User.php,UserType.php;view文件夹下有:index文件夹,index文件夹下又有index.php。

自动生成目录结构:

        在public/index.php文件,添加如下代码:

1 // 读取自动生成定义文件2 $build = include '../build.php';3 // 运行自动生成4 \think\Build::run($build);

        然后,在浏览器中打开index.php,之后我们就可以在application文件夹下看到demo模块,demo模块下的内容与build.php中定义的规则一致。


实战例子:

修改build.php代码为:

<?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2006~2016 http://thinkphp.cn All rights reserved.// +----------------------------------------------------------------------// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )// +----------------------------------------------------------------------// | Author: liu21st <liu21st@gmail.com>// +----------------------------------------------------------------------return [    // 生成应用公共文件    '__file__' => ['common.php', 'config.php', 'database.php'],    // 定义demo模块的自动生成 (按照实际定义的文件名生成)     /*'demo'     => [        '__file__'   => ['common.php'],        '__dir__'    => ['behavior', 'controller', 'model', 'view'],        'controller' => ['Index', 'Test', 'UserType'],        'model'      => ['User', 'UserType'],        'view'       => ['index/index'],    ],*/'common' => ['__dir__' => ['model'],'model' => ['Category','Admin'],],'admin' => ['__dir__' => ['controller','view'],'controller' => ['Index'],'view' => ['index/index'],],'api' => ['__dir__' => ['controller','view'],'controller' => ['Index','Image'],],'bis' => ['__dir__' => ['controller', 'view'],'controller' => ['Register','Login'],],    // 其他更多的模块定义];

public/index.php文件后面加入以下代码,就能自动生成我们所需要的目录和文件.
// 读取自动生成定义文件
$build = include '../build.php'; //因build.php在上一层目录 build.php 可以放到public上一层目录中
// 运行自动生成
\think\Build::run($build); //Build静态方法要首字大写
当不使用的时候 去掉加入的内容。
在浏览器中打开index.php,内容和我们定义的一模一样,生成的目录图: