适配Symfony 2与3+版本的Console命令通用别名配置方法
解决跨Symfony版本的通用控制台别名问题
哈哈,这个切换项目时的版本适配问题我之前也踩过坑!普通别名确实没法传递后续命令参数,换成shell函数就完美解决啦。
你可以在自己的shell配置文件里(比如~/.bashrc或者~/.zshrc,看你用的是哪种shell)添加下面这个函数:
c() { if [[ -f bin/console ]]; then php bin/console "$@" elif [[ -f app/console ]]; then php app/console "$@" else echo "找不到Symfony控制台文件(bin/console或app/console)" return 1 fi }
为啥这个方案可行?
- 用函数代替别名的核心优势是能轻松接收并传递所有后续命令参数,
"$@"会把你输入的所有参数原封不动传给对应的控制台脚本,完全解决了你之前参数无法传递的问题。 - 逻辑上先优先检查Symfony 3+的
bin/console,不存在再找Symfony 2及更早版本的app/console,完美适配多版本项目的切换场景。
让配置立刻生效的方法
添加完函数后,要么重启终端,要么执行下面的命令让配置即时生效:
source ~/.bashrc # Bash用户用这个 # 或者 source ~/.zshrc # Zsh用户用这个
之后不管你在Symfony 2还是Symfony 3+的项目目录里,直接输入c加上要执行的命令就行,比如c cache:clear,它会自动匹配对应的控制台路径~
内容的提问来源于stack exchange,提问作者Torsten
相关产品推荐
相关产品推荐

