自动生成目录结构

ThinkPHP5.0 具备自动创建功能,可以用来自动生成需要的模块及目录结构和文件等,自动生成主要调用\think\Build类库。

生成规则定义

首先需要定义一个用于自动生成的规则定义文件,通常命名为build.php

默认的框架的根目录下面自带了一个build.php示例参考文件,内容如下:

						
							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__ 表示需要自动创建目录和文件,其他的则表示为模块自动生成。

模块的自动生成则以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'],     ],  ];
						
					

命令行自动生成

我们通过控制台来完成自动生成,切换到命令行,在应用的根目录输入下面命令:

						
							>
							php think build
						
					

如果看到输出

						
							Successed
						
					

则表示自动生成成功。

默认会读取应用目录application下面的build.php 作为自动生成的定义文件,如果你的定义文件位置不同,则需要使用--config参数指定如下:

						>php think
							build
							--config
							build.php
							
						
					

表示读取根目录下的build.php文件。

生成模块指令

						
							>
							php think build --module
								test
							
						
					

表示自动生成test模块。

添加自动生成代码

如果你不习惯命令行操作,也可以直接调用\think\Build类的方法进行自动生成,例如:

						
							// 定义应用目录
							define('APP_PATH',
							__DIR__
							.
							'/../application/');
							// 加载框架引导文件
							require
							__DIR__
							.
							'/../thinkphp/start.php';
							// 读取自动生成定义文件
							$build =
							include
							'build.php';
							// 运行自动生成
							\think\Build::run($build);
						
					

run方法第二个参数用于指定要生成的应用类库的命名空间,默认是app,第三个参数是设置是否需要使用类后缀。
例如:

						
							// 定义应用目录
							define('APP_PATH',
							__DIR__
							.
							'/../application/');
							// 加载框架引导文件
							require
							__DIR__
							.
							'/../thinkphp/start.php';
							// 读取自动生成定义文件
							$build =
							include
							'build.php';
							// 运行自动生成
							\think\Build::run($build,'application',true);
						
					

可以不依赖自动生成文件,直接使用默认目录生成模块,例如:

						
							// 定义应用目录
							
								define
							('APP_PATH', __DIR__ .
							'/../application/');
							// 加载框架引导文件
							require
							__DIR__ .
							'/../thinkphp/start.php';
							// 自动生成admin模块
							\think\Build::module('admin');
						
					

module方法第二个参数和第三个参数的用法和run方法一样。

文档最后更新时间:2018-04-26 11:01:24

文档
目录

深色
模式

切换
宽度