symfony command

symfony 的command系统,有两部分构成:Application和command

1. Application是一个容器,负责对command进行管理。

2。command是每一个具体的命令。

 

Application 详细说明:

主要属性:

1. $terminal  终端,内部调用,不需要用户自己做任何控制,本属性通过配置,或者直接通过命令行的方式来确定命令展示区域的高度和宽度。在初始化函数里面直接赋值。

2. $dispatcher 事件分发,只有定义了,才会开启事件机制。

 

 

主要函数:

1. run 运行命令,是外部调用运行命令的起点。

    首先,初始化input和output

    然后,根据输入和参数,配置input和output。

    最后,调用dorun,实际运行代码。

2. dorun 命令的实际运行程序。

   2.1  version和help选项的默认处理。

   2.2 如果参数中没有命令名称,调用默认命令(默认是list)。

   2.3 根据命令名称,find(找到)对应的命令。

   2.4 调用doRunCommand,执行找到的命令。

 

3. find 根据命令名称,查找对应命令。

  3.1 commandLoader和commands合并,组成全部commands

       $allCommands = $this->commandLoader ? array_merge($this->commandLoader->getNames(), array_keys($this->commands)) : array_keys($this->commands);

 3.2 用正则查找格式跟输入命令名称匹配的命令(首先大小写一致的匹配,如果不存在,忽略大小写,重新匹配一次),找不到对应命令,直接扔异常。

 3.3 根据名称,检查commandLoader和commands中是否存在此命令,如果commandLoader中存在,加到commands中,从数组commands中读取对应command。

 

4. doRunCommand  针对当前command,运行对应的run函数,并且生成各种事件。

 

command类

 

主要函数:

1. execute 命令的执行逻辑,需要用户补全。

2. configure 配置函数,运行前补全

3. run,实际被application调用的函数,本函数调用excute运行。

 

转载于:https://www.cnblogs.com/yxzamy/p/8203775.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值