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运行。
symfony command的更多相关文章
- 在 Symfony Command中自定义脚本把Excel数据导入到数据库中
// 注:只是在此做下记录,有兴趣的可以参考,不做实际教程文档 <?php/** * Created by IntelliJ IDEA. * User: davis * Date: 2019-0 ...
- Symfony命令大全
执行命令: $ php bin/console 查看一下命令 Symfony version 3.1.5 - app/dev/debug Usage: command [options] [argum ...
- PHP学习过程_Symfony_(3)_整理_十分钟学会Symfony
这篇文章主要介绍了Symfony学习十分钟入门教程,详细介绍了Symfony的安装配置,项目初始化,建立Bundle,设计实体,添加约束,增删改查等基本操作技巧,需要的朋友可以参考下 (此文章已被多人 ...
- [PHP]Symfony or Laravel 在 console 中结合 Workerman
在web框架的console中,命令不再是直接指定入口文件,如以往 php test.php start,而是类似 php app/console do 的形式. workerman 对命令的解析是 ...
- windows 下 Symfony的下载与安装
初始化项目 本篇教程我尽量按照Windows/*nix都可以运行的方式来讲解. 得益于Symfony installer,我们目前可以很方便的初始化一个Symfony2项目.不过首先,你得有一个Sym ...
- 使用Composer安装Symfony
最近的一些项目都会使用symfony框架,首先的第一个问题就是symfony框架的下载及安装,symfony要求的php环境5.5以上的,需要php版本的切换.使用的是windows版的安装起来较为麻 ...
- [SF] Symfony 在 console 中结合 Workerman
在web框架的console中,命令不再是直接指定入口文件,如以往 php test.php start,而是类似 php app/console do 的形式. workerman 对命令的解析是 ...
- Symfony 框架实战教程——第一天:创建项目(转)
这个系列的实战博客真是太有用了,很多例子自己调试也是通的,不同于很多网上不同的实战例子...附上原文地址 https://www.chrisyue.com/symfony-in-action-day ...
- Symfony安装及使用
安装Symfony,使用 brew install homebrew/php/symfony-installer 开始一直下载不了包,我手动浏览器下载了几个,发现好像都是Permission问题,运行 ...
随机推荐
- C++ STL常用容器浅析
首先要理解什么是容器,在C++中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对象的指针,这种对象类型就叫做容器.简单来说 容器就是包含其他类的对象们的对象,当然这种(容器) ...
- centos下静默安装oracle11g
一.安装依赖包 yum -y install gcc make binutils gcc-c++ compat-libstdc++-33 elfutils-libelf-devel elfutils- ...
- SSIS - 2.使用脚本任务弹出对话框
步骤如下: 1.打开Visual Studio 2012或者SSDT工具->单击“文件”->选择"新建"打开创建新工程的对话框如下: 2.在"Business ...
- Dapp开发教程一 Asch Dapp Hello World
1 基本流程 Asch有三种net,localnet,testnet,mainnet,后两种是发布到线上的,可通过公网访问. 第一种localnet是运行在本地的.只有一个节点的私链,主要是为了方便本 ...
- js 讲解
substring() 取文本中间 split() 分割文本 charcodeat() utf-8 tolowercase() 小写 正则是一个对象 正则 i 不区分大小写 escape(s ...
- 微信昵称有特殊符号怎么保存到mysql库里?
微信昵称有特殊符号怎么保存到mysql库里? mysql库怎么保存emoji表情? 这里提供 1 种稳妥有效的方法: // 入库之前,使用 Base64 编码 String nickname = re ...
- 关于Python中迭代器的作用
迭代器的定义:含有__iter__()方法和__next__()方法的就是迭代器,即(iterate) 含有__iter__()方法就可以使用for循环,即iterable(可迭代的) Iterabl ...
- 在linux服务器新添加硬盘,如何识别、挂载。
在linux服务器新添加硬盘,如何识别.怎样挂载磁盘.过程是怎么样. fdisk - manipulate disk partition tablemkfs - build a Linux files ...
- 关于反射和JVM的整理
- SecureCRT连接linux步骤
SecureCRT连接linux步骤 做个笔记,以免隔段时间后忘了 LINUX系统一般都是用来作服务器使用,而且都是通过命令行来操作,为了操作方便我们都会使用第三方软件来远程操作.CRT就是比较常用 ...