5 * Contains \Drupal\drupalmoduleupgrader\Plugin\DMU\Fixer\ImplementHook.
8 namespace Drupal\drupalmoduleupgrader\Plugin\DMU\Fixer;
10 use Drupal\Core\Extension\ModuleHandlerInterface;
11 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
12 use Drupal\drupalmoduleupgrader\FixerBase;
13 use Pharborist\DocCommentNode;
14 use Pharborist\Functions\FunctionDeclarationNode;
15 use Pharborist\Functions\ParameterNode;
16 use Symfony\Component\DependencyInjection\ContainerInterface;
20 * id = "implement_hook"
23 class ImplementHook extends FixerBase implements ContainerFactoryPluginInterface {
25 protected $moduleHandler;
27 public function __construct(array $configuration, $plugin_id, $plugin_definition, ModuleHandlerInterface $module_handler) {
28 parent::__construct($configuration, $plugin_id, $plugin_definition);
29 $this->moduleHandler = $module_handler;
35 public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
40 $container->get('module_handler')
47 public function execute() {
48 $this->moduleHandler->loadInclude($this->configuration['module'], 'php', 'api');
50 $hook = $this->configuration['hook'];
51 $function = FunctionDeclarationNode::create($this->target->id() . '_' . $hook);
52 $function->setDocComment(DocCommentNode::create('Implements hook_' . $hook));
54 $reflector = new \ReflectionFunction('hook_' . $hook);
55 $function->matchReflector($reflector);
57 $module = $this->target->getPath('.module');
58 $doc = $this->target->open($module)->append($function);
59 $this->target->save($doc);