PHP: Пространство имен сторонних модулей / плагинов в вашей текущей платформе

#php #plugins #namespaces

#php #Плагины #пространства имен

Вопрос:

Допустим, у меня есть фреймворк под названием Foo, и он содержит следующие пространства имен:

  1. FooControllers
  2. FooModels
  3. FooCore

Я хочу включить сторонний плагин (Symfony YAML), но это не библиотека с пространством имен.

Как бы я включил все классы YAML (их четыре) в следующее пространство имен:

FooThirdPartyYAML

Без редактирования исходных файлов Symfony YAML?

Комментарии:

1. У вас есть фактическое столкновение идентификаторов, или пространство имен является самоцелью?

2. Перенос пространства имен является самоцелью.

Ответ №1:

Вы не можете сделать это без изменения исходных файлов. Даже если вы создали классы-оболочки с пространством имен, которые расширили классы YAML Symfony, исходные классы все равно будут находиться в глобальном пространстве имен (что противоречит цели пространства имен).

Есть ли причина, по которой вы не хотите изменять исходные файлы? Пространство имен очень легко объединить, если вы беспокоитесь о необходимости обновления пакетов Symfony (вы используете контроль версий, да?).

Комментарии:

1. Основная причина нежелания изменять исходные файлы заключается в том, что YAML включается в качестве подмодуля через git.

2. Почему бы не поместить это в свой собственный репозиторий и не внести изменения? Затем вы можете объединять обновления YAML по мере необходимости (не очень часто, если вообще когда-либо), и это будет пространство имен.