不要再打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

相关文章

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

Linux grep 命令的使用指南

《Linuxgrep命令的使用指南》本文给大家介绍Linuxgrep命令的使用指南,包括基础搜索语法、实践指南,感兴趣的朋友跟随小编一起看看吧... 目录linux grep 命令全面使用指南一、基础搜索语法1. 基本文本搜索2. 多文件搜索二、常用选项详解1. 输出控制选项2. 上下文控制选项三、正则表达

DNS查询的利器! linux的dig命令基本用法详解

《DNS查询的利器!linux的dig命令基本用法详解》dig命令可以查询各种类型DNS记录信息,下面我们将通过实际示例和dig命令常用参数来详细说明如何使用dig实用程序... dig(Domain Information Groper)是一款功能强大的 linux 命令行实用程序,通过查询名称服务器并输

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻