#php #plugins #namespaces
#php #Плагины #пространства имен
Вопрос:
Допустим, у меня есть фреймворк под названием Foo, и он содержит следующие пространства имен:
FooControllers
FooModels
FooCore
Я хочу включить сторонний плагин (Symfony YAML), но это не библиотека с пространством имен.
Как бы я включил все классы YAML (их четыре) в следующее пространство имен:
FooThirdPartyYAML
Без редактирования исходных файлов Symfony YAML?
Комментарии:
1. У вас есть фактическое столкновение идентификаторов, или пространство имен является самоцелью?
2. Перенос пространства имен является самоцелью.
Ответ №1:
Вы не можете сделать это без изменения исходных файлов. Даже если вы создали классы-оболочки с пространством имен, которые расширили классы YAML Symfony, исходные классы все равно будут находиться в глобальном пространстве имен (что противоречит цели пространства имен).
Есть ли причина, по которой вы не хотите изменять исходные файлы? Пространство имен очень легко объединить, если вы беспокоитесь о необходимости обновления пакетов Symfony (вы используете контроль версий, да?).
Комментарии:
1. Основная причина нежелания изменять исходные файлы заключается в том, что YAML включается в качестве подмодуля через git.
2. Почему бы не поместить это в свой собственный репозиторий и не внести изменения? Затем вы можете объединять обновления YAML по мере необходимости (не очень часто, если вообще когда-либо), и это будет пространство имен.