自動生成目錄結構
ThinkPHP5.0 具備自動創建功能,可以用來自動生成需要的模塊及目錄結構和文件等,自動生成主要調用\think\Build類庫。
生成規則定義
首先需要定義一個用于自動生成的規則定義文件,通常命名為build.php。
默認的框架的根目錄下面自帶了一個build.php示例參(can)考文件(jian),內容如(ru)下(xia):
return [
// 生成運行時目(mu)錄
'__file__' => ['common.php'],
// 定義index模(mo)塊的自動生(sheng)成
'index' => [
'__file__' => ['common.php'],
'__dir__' => ['behavior', 'controller', 'model', 'view'],
'controller' => ['Index', 'Test', 'UserType'],
'model' => [],
'view' => ['index/index'],
],
// 。。。 其他更多(duo)的(de)模塊定義
];
可以(yi)給每(mei)個模塊定義需(xu)要自動生(sheng)成的文件和(he)目錄,以(yi)及(ji)MVC類。
-
__dir__表示生成目錄(支持多級目錄) -
__file__表示生成文件(不定義默認會生成 config.php 文件) - controller 表示生成controller類
- model表示生成model類
- view表示生成html文件(支持子目錄)
自動生成以APP_PATH為起始目錄,__dir__ 和 __file__ 表(biao)示(shi)(shi)需要(yao)自動(dong)創建目錄和文件,其他的則表(biao)示(shi)(shi)為(wei)模塊自動(dong)生成(cheng)。
模塊的自動生成則以 APP_PATH.'模塊名/' 為(wei)起始目錄。
并且會(hui)自動生成(cheng)模塊的(de)默認的(de)Index訪(fang)問控制器文件用于顯示框架的(de)歡迎頁面。
我們還可以在APP_PATH目(mu)錄(lu)下(xia)面自動生(sheng)成其它的文件和目(mu)錄(lu),或者(zhe)增加多個模塊的自動生(sheng)成,例如:
return [
'__file__' => ['hello.php','test.php'],
// 定義index模(mo)塊的自(zi)動生成(cheng)
'index' => [
'__file__' => ['tags.php', 'user.php', 'hello.php'],
'__dir__' => ['behavior', 'controller', 'model', 'view'],
'controller' => ['Index', 'Test', 'UserType'],
'model' => [],
'view' => ['index/index'],
],
// 定義test模塊的自(zi)動(dong)生成
'test'=>[
'__dir__' => ['behavior','controller','model','widget'],
'controller'=> ['Index','Test','UserType'],
'model' => ['User','UserType'],
'view' => ['index/index','index/test'],
],
];
命令行自動生成
我們通(tong)過控(kong)制臺來完成自(zi)動生(sheng)成,切換到命令行,在應用的(de)根目錄輸入下面(mian)命令:
>php think build
如果看到輸出
Successed
則表示自動(dong)生(sheng)成(cheng)成(cheng)功。
默認會讀取應用目錄application下面的build.php 作為自動生成的定義文件,如果你的定義文件位置不同,則需要使用--config參數指定如下:
>php think build --config build.php
表示讀取根目錄下的build.php文件。
生成模塊指令
>php think build --module test
表示自動生成test模塊。
添加自動生成代碼
如果你不習慣命令行操作,也可以直接調用\think\Build類的方法進行(xing)自動生(sheng)成,例如:
// 定義應用目錄(lu)
define('APP_PATH', __DIR__ . '/../application/');
// 加載(zai)框(kuang)架引(yin)導文件(jian)
require __DIR__ . '/../thinkphp/start.php';
// 讀取自(zi)動(dong)生成定義文(wen)件
$build = include 'build.php';
// 運行自動生成
\think\Build::run($build);
run方法第二個參數用于指定要生成的應用類庫的命名空間,默認是app,第三個參數是設置是否需要使用類后綴。
例如:
// 定(ding)義應用目錄(lu)
define('APP_PATH', __DIR__ . '/../application/');
// 加載(zai)框(kuang)架引導文(wen)件
require __DIR__ . '/../thinkphp/start.php';
// 讀取(qu)自動生成定(ding)義文件(jian)
$build = include 'build.php';
// 運行自(zi)動生(sheng)成(cheng)
\think\Build::run($build,'application',true);
可以不依賴自動生成文件,直接使用默認目錄生成模塊,例如(ru):
// 定義(yi)應用目(mu)錄
define('APP_PATH', __DIR__ . '/../application/');
// 加載(zai)框(kuang)架引導文件(jian)
require __DIR__ . '/../thinkphp/start.php';
// 自動生(sheng)成admin模塊(kuai)
\think\Build::module('admin');
module方法第二個參數和第三個參數的用法和run方法一樣。
