## 自动生成
ThinkPHP5.0.0 具备自动创建功能,可以用来自动生成需要的模块和目录结构。
首先要在入口文件开启自动创建,如下:
~~~
define('APP_AUTO_BUILD',true);
~~~
开启后,需要定义自动创建的定义文件`build.php`。
默认的框架的根目录下面自带了一个`build.php`示例参考文件,把这个文件复制到application目录下面然后根据需要修改后就可以用于自动生成。
>[danger] 自动生成机制需要`application`目录具备可写权限。
默认的build.php内容如下:
~~~
return [
// 生成运行时目录
'runtime' => [
'__dir__' => ['cache', 'log', 'temp','template'],
],
// 定义index模块的自动生成
'index' => [
'__file__' => ['tags.php', 'user.php', 'hello.php'],
'__dir__' => ['behavior', 'controller', 'model', 'view'],
'controller' => ['Index', 'Test', 'UserType'],
'model' => [],
'view' => ['index/index'],
],
// 。。。 其他更多的模块定义
];
~~~
可以给每个模块定义需要自动生成的文件和目录,以及MVC类。
* `__dir__` 表示生成目录(支持多级目录)
* `__file__` 表示生成文件(不定义默认会生成 config.php 文件)
* controller 表示生成controller类
* model表示生成model类
* view表示生成html文件(支持子目录)
自动生成以`APP_PATH`为起始目录,`__dir__` 和 `__file__` 表示需要自动创建目录和文件,其他的则表示为模块自动生成。
模块的自动生成则以 `APP_PATH.'模块名/'` 为起始目录。
并且会自动生成模块的默认的Index访问控制器文件用于显示框架的欢迎页面。
我们还可以在`APP_PATH`目录下面自动生成其它的文件和目录,或者增加多个模块的自动生成,例如:
~~~
return [
'__dir__' => ['runtime/cache','runtime/log','runtime/temp'],
'__file__' => ['hello.php','test.php'],
// 定义index模块的自动生成
'index' => [
'__file__' => ['tags.php', 'user.php', 'hello.php'],
'__dir__' => ['behavior', 'controller', 'model', 'view'],
'controller' => ['Index', 'Test', 'UserType'],
'model' => [],
'view' => ['index/index'],
],
// 定义test模块的自动生成
'test'=>[
'__dir__' => ['behavior','controller','model','widget'],
'controller'=> ['Index','Test','UserType'],
'model' => ['User','UserType'],
'view' => ['index/index','index/test'],
],
// 。。。 其他更多的模块定义
];
~~~
> 为了性能考虑,在生成完成之后,建议删除或者更名`build.php`文件。
> 将来计划添加扫描当前数据库自动生成模型类的功能。