自動(dòng)生成目錄結(jié)構(gòu)
ThinkPHP5.0 具備自動(dòng)創(chuàng)建功能,可以用來自動(dòng)生成需要的模塊及目錄結(jié)構(gòu)和文件等,自動(dòng)生成主要調(diào)用\think\Build
類庫(kù)。
生成規(guī)則定義
首先需要定義一個(gè)用于自動(dòng)生成的規(guī)則定義文件,通常命名為build.php
。
默認(rèn)的框架的根目錄下面自帶了一個(gè)build.php
示例參考文件,內(nèi)容如下:
return [
// 生成運(yùn)行時(shí)目錄
'__file__' => ['common.php'],
// 定義index模塊的自動(dòng)生成
'index' => [
'__file__' => ['common.php'],
'__dir__' => ['behavior', 'controller', 'model', 'view'],
'controller' => ['Index', 'Test', 'UserType'],
'model' => [],
'view' => ['index/index'],
],
// 。。。 其他更多的模塊定義
];
可以給每個(gè)模塊定義需要自動(dòng)生成的文件和目錄,以及MVC類。
-
__dir__
表示生成目錄(支持多級(jí)目錄) -
__file__
表示生成文件(不定義默認(rèn)會(huì)生成 config.php 文件) - controller 表示生成controller類
- model表示生成model類
- view表示生成html文件(支持子目錄)
自動(dòng)生成以APP_PATH
為起始目錄,__dir__
和 __file__
表示需要自動(dòng)創(chuàng)建目錄和文件,其他的則表示為模塊自動(dòng)生成。
模塊的自動(dòng)生成則以 APP_PATH.'模塊名/'
為起始目錄。
并且會(huì)自動(dòng)生成模塊的默認(rèn)的Index訪問控制器文件用于顯示框架的歡迎頁(yè)面。
我們還可以在APP_PATH
目錄下面自動(dòng)生成其它的文件和目錄,或者增加多個(gè)模塊的自動(dòng)生成,例如:
return [
'__file__' => ['hello.php','test.php'],
// 定義index模塊的自動(dòng)生成
'index' => [
'__file__' => ['tags.php', 'user.php', 'hello.php'],
'__dir__' => ['behavior', 'controller', 'model', 'view'],
'controller' => ['Index', 'Test', 'UserType'],
'model' => [],
'view' => ['index/index'],
],
// 定義test模塊的自動(dòng)生成
'test'=>[
'__dir__' => ['behavior','controller','model','widget'],
'controller'=> ['Index','Test','UserType'],
'model' => ['User','UserType'],
'view' => ['index/index','index/test'],
],
];
命令行自動(dòng)生成
我們通過控制臺(tái)來完成自動(dòng)生成,切換到命令行,在應(yīng)用的根目錄輸入下面命令:
>php think build
如果看到輸出
Successed
則表示自動(dòng)生成成功。
默認(rèn)會(huì)讀取應(yīng)用目錄application
下面的build.php
作為自動(dòng)生成的定義文件,如果你的定義文件位置不同,則需要使用--config
參數(shù)指定如下:
>php think build --config build.php
表示讀取根目錄下的build.php
文件。
生成模塊指令
>php think build --module test
表示自動(dòng)生成test
模塊。
添加自動(dòng)生成代碼
如果你不習(xí)慣命令行操作,也可以直接調(diào)用\think\Build
類的方法進(jìn)行自動(dòng)生成,例如:
// 定義應(yīng)用目錄
define('APP_PATH', __DIR__ . '/../application/');
// 加載框架引導(dǎo)文件
require __DIR__ . '/../thinkphp/start.php';
// 讀取自動(dòng)生成定義文件
$build = include 'build.php';
// 運(yùn)行自動(dòng)生成
\think\Build::run($build);
run
方法第二個(gè)參數(shù)用于指定要生成的應(yīng)用類庫(kù)的命名空間,默認(rèn)是app
,第三個(gè)參數(shù)是設(shè)置是否需要使用類后綴。
例如:
// 定義應(yīng)用目錄
define('APP_PATH', __DIR__ . '/../application/');
// 加載框架引導(dǎo)文件
require __DIR__ . '/../thinkphp/start.php';
// 讀取自動(dòng)生成定義文件
$build = include 'build.php';
// 運(yùn)行自動(dòng)生成
\think\Build::run($build,'application',true);
可以不依賴自動(dòng)生成文件,直接使用默認(rèn)目錄生成模塊,例如:
// 定義應(yīng)用目錄
define('APP_PATH', __DIR__ . '/../application/');
// 加載框架引導(dǎo)文件
require __DIR__ . '/../thinkphp/start.php';
// 自動(dòng)生成admin模塊
\think\Build::module('admin');
module
方法第二個(gè)參數(shù)和第三個(gè)參數(shù)的用法和run
方法一樣。