0 简介
Deployer安装完成后
输入dep init
开始初始化,生成默认的配置文件deploy.php
init命令的实现在srcConsoleInitCommand.php文件中
scrInitializer目录则包含了初始化相关的模板
1 InitCommand.php init命令
1 InitCommand类
class InitCommand extends Command{}
InitCommand类继承了Symfony的Command类,
实现为一个命令行的命令
2 __constrcut() 构造函数
构造函数主要初始化了InitCommand的initializer和availableTemplates两个变量initalizer 是一个包含了多个模板的初始化器
具体实现就是下面将要分析的InitalizeravailableTemplates 是初始化器中已注册的模板名数组
3 configure() 命令配置函数
这里调用Symfony的command的setName(),setDescription(),addOption()配置了init命令
setName("init") 命令名称为initsetDescription() 设置了命令的描述信息,在输入help时显示
addOption() 添加了三个选项-template默认初始化模板
-directory 配置文件deploy.php生成目录 -filename 配置文件的名称,默认为deploy.php
4 execute() 命令执行函数
首先获取命令行输入的选项参数$template $directory $file
如果没有输入$template,则调用Symfony输出模板选项信息提示用户选择一个模板
然后调用初始化器initializer的initalize()方法开始初始化配置文件
输出提示信息 创建配置文件成功
5 createInitializer() 创建初始化器
在InitCommand的构造函数中用来创建初始化器
其中注册了deployer自带的模板
2 Initializer 模板初始化器
1 Initializer.php 初始化器
0 简介
Initializer类是deployer用来管理配置模板的初始化器。
1 addTemplate() 添加模板
添加模板到模板初始化器中
2 getTemplateNames() 获取已注册模板名
返回已注册的所有模板名数组
3 initalize() 初始化配置模板
$template参数 模板类型
$directory参数 配置模板生成目录
$file参数 配置模板文件名
$params参数 其他参数首先根据$template获取对应的注册的模板类
然后创建模板文件
最后调用获取的模板类的initalize()初始化模板文件
4 checkDirectoryBeforeInitialize()
检查初始化模板目录并创建
5 checkFileBeforeInitialize()
检查初始化模板文件并创建
2 Template 初始化模板
1 TemplateInterface.php 模板接口
声明所有模板类需要实现initalize()方法
用来初始化模板类的配置文件
2 Template.php 模板基类
initalize() 初始化模板文件
首先合并参数信息到$params。
然后调用模板子类的getTemplateContent()获取模板内容。
写入获取的内容到模板配置文件
3 CommonTemplate 基础模板类
1 getTemplateContent()
获取模板内容
获取简单的模板内容
4 FrameworkTemplate.php 框架模板基类
1 getTemplateContent()
1 getTemplateContent()
获取模板内容
框架类模板的基础内容
然后调用getExtraContent()获取特定框架的内容信息
2 getRecipe()
获取模板食谱名
3 getExtraContent()
获取特定框架类的配置内容
5 LaravelTemplate Laravel配置模板类
这里的框架模板类以Laravel为例
1 getRecipe()
获取框架的食谱名称,deployer为Laravel框架预设了部署流程 具体内容在reciple目录的laravel文件中
这里的getRecipe()就是获取文件名
2 getExtraContent()
获取Laravel框架的特定内容
这里主要注册了deploy:symlink前执行artisn:migrate命令
3 总结
init 命令初始化deploy的配置文件deploy.php其中根据选项参数获取template 初始化不同的模板。
-2018-4-5 18:58
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。