不要再打Drush命令了 告诉你Drupal Console強大的地方!

2024-04-27 12:58

本文主要是介绍不要再打Drush命令了 告诉你Drupal Console強大的地方!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 1. Drupal console简述

drupal console是一个能够生成代码样本与drupal交互并提供命令行接口CLI操作的工具。从重建缓存,到列出路由、服务以及模块。甚至还可以和配置管理进行交互。

 

2. Drupal console的诞生

一切都始于使Drupal 8更好的想法,每一项伟大的发明/创新都源于一个构想,而Drupal从7过渡到8伴随着对昨天基本操作程序的巨大改变。JesusDavid是Drupal Console项目的发起人,提出了将symfony控制台纳入Drupal核心的想法。将其他symfony组件包含到Drupal核心当中。但最初并没有被Drupal社区广泛接受,接受新的理念通常需要一段时间的市场证明,在几次尝试要求纳入并尝试合作进行不同的drupal项目之后,JesusDavid突然意识到,融合和协作将不会发生。于是在哥斯达黎加Drupal camp午餐时,JesusDavid随便讨论了他们试图将创新引入Drupal和相关项目时遇到的挫败感,而Larry Garfield则吹嘘说“有人需要创建一个包含Symfony Console和代码生成的单独项目” 。这句话催生了今天的Drupal Console项目。

 

3. Drupal console与Drush的区别

drupal console是面向oop 设计即drupal8含版本以上的模块,而drush除了向下兼容之外,drush9也基于Symfony和POO思想重新设计开发的。实际上这两者区别不大,接下来从源码上解析一下两者:

  • Drush的加载过程
  1.    // Set up environment  
  2. $environment = new Environment(Path::getHomeDirectory(), $cwd, $autoloadFile);  
  3. $environment->setConfigFileVariant(Drush::getMajorVersion());  
  4. $environment->setLoader($loader);  
  5. $environment->applyEnvironment();  
  6.   
  7. // Preflight and run  
  8. $preflight = new Preflight($environment);  
  9. $di = new DependencyInjection();  
  10. $di->desiredHandlers(['errorHandler''shutdownHandler']);  
  11. $runtime = new Runtime($preflight, $di);  
  12. $status_code = $runtime->run($_SERVER['argv']);  
  1. 首先是加载当前的站点环境变量
  2. 把当前环境变量与命令行输入和注入处理器放到当前容器上下文当中
  1. protected function addDrushServices(ContainerInterface $container, ClassLoader $loader, DrupalFinder $drupalFinder, SiteAliasManager $aliasManager, DrushConfig $config)  {
  2.  
  3.  // Override Robo's logger with our own  
  4.  $container->share('logger''Drush\Log\Logger')  
  5.    ->withArgument('output')  
  6.    ->withMethodCall('setLogOutputStyler', ['logStyler']);  
  7.   
  8.  $container->share('loader', $loader);  
  9.  $container->share('site.alias.manager', $aliasManager);  
  10.   
  11.  // Fetch the runtime config, where -D et. al. are stored, and  
  12.  // add a reference to it to the container.  
  13.  $container->share('config.runtime', $config->getContext(ConfigOverlay::PROCESS_CONTEXT));  
  14.   
  15.  // Override Robo's formatter manager with our own  
  16.  // @todo not sure that we'll use this. Maybe remove it.  
  17.  $container->share('formatterManager', \Drush\Formatters\DrushFormatterManager::class)  
  18.      ->withMethodCall('addDefaultFormatters', [])  
  19.      ->withMethodCall('addDefaultSimplifiers', []);  
  20.   
  21.  // Add some of our own objects to the container  
  22.  $container->share('bootstrap.drupal8''Drush\Boot\DrupalBoot8');  
  23.  $container->share('bootstrap.manager''Drush\Boot\BootstrapManager')  
  24.      ->withMethodCall('setDrupalFinder', [$drupalFinder]);  
  25.  // TODO: Can we somehow add these via discovery (e.g. backdrop extension?)  
  26.  $container->extend('bootstrap.manager')  
  27.      ->withMethodCall('add', ['bootstrap.drupal8']);  
  28.  $container->share('bootstrap.hook''Drush\Boot\BootstrapHook')  
  29.    ->withArgument('bootstrap.manager');  
  30.  $container->share('tildeExpansion.hook''Drush\Runtime\TildeExpansionHook');  
  31.  $container->share('process.manager', ProcessManager::class)  
  32.      ->withMethodCall('setConfig', ['config'])  
  33.      ->withMethodCall('setConfigRuntime', ['config.runtime']);  
  34.  $container->share(<

这篇关于不要再打Drush命令了 告诉你Drupal Console強大的地方!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/940562

相关文章

postgresql数据库基本操作及命令详解

《postgresql数据库基本操作及命令详解》本文介绍了PostgreSQL数据库的基础操作,包括连接、创建、查看数据库,表的增删改查、索引管理、备份恢复及退出命令,适用于数据库管理和开发实践,感兴... 目录1. 连接 PostgreSQL 数据库2. 创建数据库3. 查看当前数据库4. 查看所有数据库

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

Java -jar命令如何运行外部依赖JAR包

《Java-jar命令如何运行外部依赖JAR包》在Java应用部署中,java-jar命令是启动可执行JAR包的标准方式,但当应用需要依赖外部JAR文件时,直接使用java-jar会面临类加载困... 目录引言:外部依赖JAR的必要性一、问题本质:类加载机制的限制1. Java -jar的默认行为2. 类加

git stash命令基本用法详解

《gitstash命令基本用法详解》gitstash是Git中一个非常有用的命令,它可以临时保存当前工作区的修改,让你可以切换到其他分支或者处理其他任务,而不需要提交这些还未完成的修改,这篇文章主要... 目录一、基本用法1. 保存当前修改(包括暂存区和工作区的内容)2. 查看保存了哪些 stash3. 恢

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-

MySQL的ALTER TABLE命令的使用解读

《MySQL的ALTERTABLE命令的使用解读》:本文主要介绍MySQL的ALTERTABLE命令的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、查看所建表的编China编程码格式2、修改表的编码格式3、修改列队数据类型4、添加列5、修改列的位置5.1、把列

Python多重继承慎用的地方

《Python多重继承慎用的地方》多重继承也可能导致一些问题,本文主要介绍了Python多重继承慎用的地方,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录前言多重继承要慎用Mixin模式最后前言在python中,多重继承是一种强大的功能,它允许一个