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

Drupal Console是一款强大的命令行工具,用于与Drupal交互,提供代码生成和CLI操作。它专为Drupal 8及以上版本设计,强调面向对象编程。与Drush不同,Drupal Console在Drush9中也基于Symfony和POO思想重新设计。本文介绍了Drupal Console的诞生、与Drush的区别,并提供了安装和使用示例,如切换模式、创建模块和控制器等。
摘要由CSDN通过智能技术生成

 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(<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值