自动生成目录结构

优质
小牛编辑
131浏览
2023-12-01

ThinkPHP5.1 具备自动创建功能,可以用来自动生成需要的模块及目录结构和文件等。

快速生成模块

生成一个test模块的指令如下:

>php think build --module test

表示自动生成test模块,自动生成的模块目录包含了configcontrollermodelview目录以及common.php公共文件。

批量生成模块

如果需要批量生成多个模块的目录和文件,需要定义规则文件build.php并放入应用目录下面。

默认的框架的根目录下面自带了一个build.php示例参考文件(把该文件修改后放入应用根目录下面即可),内容如下:

return [
    // 生成应用公共文件
    '__file__' => ['common.php'],

    // 定义demo模块的自动生成 (按照实际定义的文件名生成)
    'demo'     => [
        '__file__'   => ['common.php'],
        '__dir__'    => ['behavior', 'controller', 'model', 'view'],
        'controller' => ['Index', 'Test', 'UserType'],
        'model'      => ['User', 'UserType'],
        'view'       => ['index/index'],
    ],

    // 其他更多的模块定义
];

可以给每个模块定义需要自动生成的文件和目录,以及MVC类。

  • __dir__ 表示生成目录(支持多级目录)
  • __file__ 表示生成文件(不定义默认会生成 config.php 文件)
  • controller 表示生成controller类
  • model表示生成model类
  • view表示生成html文件(支持子目录)

自动生成以应用目录为起始目录,__dir____file__ 表示需要自动创建目录和文件,其他的则表示为模块自动生成。

模块的自动生成则以 应用目录/模块名/ 为起始目录。

并且会自动生成模块的默认的Index访问控制器文件用于显示框架的欢迎页面。

我们还可以在应用目录下面自动生成其它的文件和目录,或者增加多个模块的自动生成,例如:

return [
    // 定义demo模块的自动生成
    'demo'   => [
        '__file__'   => ['tags.php', 'user.php', 'hello.php'],
        '__dir__'    => ['config', 'controller', 'model', 'view'],
        'controller' => ['Index', 'Test', 'UserType'],
        'model'      => [],
        'view'       => ['index/index'],
    ],    

    // 定义test模块的自动生成
    'test'=>[
        '__dir__'   =>  ['config','controller','model','widget'],
        'controller'=>  ['Index','Test','UserType'],
        'model'     =>   ['User','UserType'],
        'view'      =>  ['index/index','index/test'],
    ],
 ];

定义好生成规则文件后,我们在命令行下面输入命令:

>php think build

如果看到输出

Successed

则表示自动生成成功。