В Drupal 7 у меня может быть модуль внутри другого модуля. Это все еще имеет место в Drupal 8 и как я мог бы классы пространства имен внутри подмодуля?
Еще одна вещь, которую я могу сделать в Drupal 7, - это создавать подпапки внутри папки модулей для группировки моих модулей.
Пример:
сайты
--- / все
--- / --- / модули
--- / --- / --- / Collection_Alpha
--- / --- / --- / --- / module_a
--- / - - / --- / --- / module_b
--- / --- / --- / Collection_Beta
--- / --- / --- / --- / module_x
--- / --- / --- / --- / module_y
Это все еще возможно в Drupal 8? Если да, то как мне нужно распределять пространства между моими классами, чтобы автозагрузчик мог разрешить его в правильной структуре папок?
Например: Drupal \ Collection_Alpha \ module_a \ myClass1?
Drupal\my_module
в «my_module / src»,Drupal\my_submodule
субмодуль будет в «my_module / modules / my_submodule / src» и т. д.Ответы:
@Clive правильно.
Пространство имен всегда
Drupal\{module_name}
. Где этот модуль живет, не имеет значения (если он где-то, где его может найти Drupal). Это пространство имен всегда указывает на$path_to_module/src
.Это не могло бы работать по-другому. На разных сайтах модули имеют разную структуру и разные места, но один и тот же код должен работать независимо от того, где.
источник
\Drupal
для согласованности. Но тем не менее интересный вопрос, я бы посоветовал вам задать его как отдельный вопрос. На самом деле, если вы этого не сделаете, я, вероятно, буду :)Пространства имен основаны на автозагрузке PSR-4, проверьте спецификацию http://www.php-fig.org/psr/psr-4 .
Если вы хотите субмодули, вы можете использовать следующую структуру папок. d8:
Пространство имен для "my_module":
Пространство имен для "my_sub_module":
Drupal\my_sub_module\Controller\B
Посмотрите пространства имен PSR-4 и автозагрузку в Drupal 8 для получения дополнительной информации.
источник