## 自動生成
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`文件。
> 將來計劃添加掃描當前數據庫自動生成模型類的功能。