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