Добавление пространства имен в импортированный сторонний пакет в Composer

0

Я импортирую сторонний пакет в свой проект с использованием композитора.

composer.json пакета загружает свои классы с помощью "classmap":

{
  ...
  "name"=>"vendor/project",
  ...
  "require": {
    "php": ">=5.2.0"
  },
  "type": "library",
  "include-path":["src/"],
  "classmap": [
    "src/path/to/lib1",
    "src/path/to/lib2"
  ]
  ...
}

Мой проект composer.json вытаскивает пакет с использованием "require".

{
  ...
  "require": {
    "vendor/project": "m.n.*",
  }
  ...
}

Я хотел бы добавить пространство имен, которое может префикс всех классов этого пакета, когда я использую его в своем проекте, могу ли я сделать это в композиторе?

Я знаю, что могу использовать autoload на уровне моего проекта, но, по-видимому, этим классам не требуется загрузка снова и где я могу указать его?

Теги:
composer-php

1 ответ

2
Лучший ответ

Вы не можете добавить пространство имен в проект без редактирования каждого отдельного файла в проекте и добавления объявления namespace.. наверху. Вероятно, это невозможно.

Если вы пропустите свой собственный код, не должно возникнуть проблемы с конфликтом имени.
Если библиотека сталкивается с еще одной библиотекой сторонних сторон, не принадлежащей к именам, которую вы также не можете использовать для пространства имен, то у вас проблемы. Если это не так, нет реальной причины беспокоиться об этом.

Если определение композитора настроено правильно, все, что вам нужно сделать, это просто использовать класс:

$foo = new \VendorClass;

Автозагрузка композитора позаботится о загрузке класса, отсутствие пространства имен не вызывает беспокойства (см. Выше).

  • 0
    Спасибо за подробное описание

Ещё вопросы

Сообщество Overcoder
Наверх
Меню