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运行。

symfony command的更多相关文章

  1. 在 Symfony Command中自定义脚本把Excel数据导入到数据库中

    // 注:只是在此做下记录,有兴趣的可以参考,不做实际教程文档 <?php/** * Created by IntelliJ IDEA. * User: davis * Date: 2019-0 ...

  2. Symfony命令大全

    执行命令: $ php bin/console 查看一下命令 Symfony version 3.1.5 - app/dev/debug Usage: command [options] [argum ...

  3. PHP学习过程_Symfony_(3)_整理_十分钟学会Symfony

    这篇文章主要介绍了Symfony学习十分钟入门教程,详细介绍了Symfony的安装配置,项目初始化,建立Bundle,设计实体,添加约束,增删改查等基本操作技巧,需要的朋友可以参考下 (此文章已被多人 ...

  4. [PHP]Symfony or Laravel 在 console 中结合 Workerman

    在web框架的console中,命令不再是直接指定入口文件,如以往 php test.php start,而是类似 php app/console do 的形式. workerman 对命令的解析是 ...

  5. windows 下 Symfony的下载与安装

    初始化项目 本篇教程我尽量按照Windows/*nix都可以运行的方式来讲解. 得益于Symfony installer,我们目前可以很方便的初始化一个Symfony2项目.不过首先,你得有一个Sym ...

  6. 使用Composer安装Symfony

    最近的一些项目都会使用symfony框架,首先的第一个问题就是symfony框架的下载及安装,symfony要求的php环境5.5以上的,需要php版本的切换.使用的是windows版的安装起来较为麻 ...

  7. [SF] Symfony 在 console 中结合 Workerman

    在web框架的console中,命令不再是直接指定入口文件,如以往 php test.php start,而是类似 php app/console do 的形式. workerman 对命令的解析是 ...

  8. Symfony 框架实战教程——第一天:创建项目(转)

    这个系列的实战博客真是太有用了,很多例子自己调试也是通的,不同于很多网上不同的实战例子...附上原文地址  https://www.chrisyue.com/symfony-in-action-day ...

  9. Symfony安装及使用

    安装Symfony,使用 brew install homebrew/php/symfony-installer 开始一直下载不了包,我手动浏览器下载了几个,发现好像都是Permission问题,运行 ...

随机推荐

  1. IDEA激活方式(亲测有效)加汉化方式

    2018/12/3 最新破解方法 将0.0.0.0 account.jetbrains.com保存到本地host文件中 然后使用注册码 K71U8DBPNE-eyJsaWNlbnNlSWQiOiJLN ...

  2. C++ STL常用容器浅析

    首先要理解什么是容器,在C++中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对象的指针,这种对象类型就叫做容器.简单来说 容器就是包含其他类的对象们的对象,当然这种(容器) ...

  3. ElasticSearch 一

    一:elasticSearch的目录结构的分类 /bin 运行ElasticSearch实例和管理插件呢的一些脚本 /config 配置文件 路径,包含elasticsearch.yml /data ...

  4. node 学习(一)

    什么是 Node.js Node.js就是运行在服务端的JavaScript. Node.js是一个基于Chrome JavaScript运行时建立的一个平台. Node.js是一个事件驱动 I/O ...

  5. 严重: StandardWrapper.Throwable org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'goodsController' defined in file [D:\eclipse\eclipse-space\pinyougou_parent\pinyou

    由于错误太宽,没法截取完整的,所以不怎么连贯,但是不影响错误的解决. 这个错误是因为service无法自动注入.显示嵌套状态异常. 我就查看了一下我的坐标和配置文件,配置文件的路径和访问地址都是正确的 ...

  6. XML自学笔记

    1.    xml指可扩展标记语言,(extensible markup language),该语言被设计用来传输和存储数据,HTML被设计用来显示数据 XML标签没有被预定义,需要自定义标签:XML ...

  7. 封装和static 以及关键字“this”的用法

    1 封装 1.1 构造方法 构造方法是一种特殊的方法,专门用于构造/实例化对象,形式 [修饰符] 类名(){}: 1.1.1 无参构造 无参构造方法就是构造方法没有任何参数.构造方法在创建对象(new ...

  8. 可扩展的Web架构和分布式系统

    原文链接:http://www.aosabook.org/en/distsys.html 开源软件已经成为一些大型网站的基石.随着这些网站的发展,围绕其架构的最佳实践和指导原则应运而生.本章旨在讨论设 ...

  9. SNMP 优秀帖子

    -- 比较系统的描述http://blog.sina.com.cn/s/blog_54837cf301011607.html 几个SNMP官方网站(搜索关键字:snmplibrary C#):http ...

  10. 爬虫下载校花网美女信息-lxml

    # coding=utf-8 # !/usr/bin/env python ''' author: dangxusheng desc : 下载校花网上的个人信息:名字-学校-图片地址-点赞数 date ...