2015-07-14 2 views
1

Я создал небольшой инструмент командной строки в PHP, и я также упаковал это как архив PHAR.Ссылки .phar классы, установленные глобально с композитором

Следующее, что я сделал, было опубликовано в моем архиве до packagist.org aka composer.

теперь я могу установить мой пакет ФАР через композитор, как так:

composer global require acme/mypackage 

Это устанавливает свой пакет штраф. И я тоже могу запустить его с помощью команды.

Пока все хорошо, но здесь возникает проблема, с которой я сталкиваюсь сейчас.

У меня есть другой проект, который должен использовать acme/mypackage. Я хочу, чтобы этот проект ссылался на класс, который был упакован в этот PHAR. Что-то вроде этого:

<?php 
class SomeClass extends AcmeClass { 

} 

Проблема заключается в том, что код PHP не распознает AcmeClass класс. Имеет смысл, потому что он, очевидно, «глобально» установлен где-то в системе.

Как другие библиотеки решают эту проблему? Если я не ошибаюсь, то PHPUnit делает что-то подобное правильно?

Как я могу решить эту проблему?

ответ

0

Вам нужно добавить composer.json файл в корневом каталоге вашего проекта:

Первый (и часто только), что вы указываете в composer.json является ключом требуется. Вы просто говорите Composer, от которого зависит ваш проект.

{ 
    "require": { 
     "monolog/monolog": "1.0.*" 
    } 
} 

Далее вам необходимо автозагрузку свои зависимости.

Для библиотек, которые определяют информацию автозагрузки, Composer создает файл поставщика/autoload.php. Вы можете просто включить этот файл, и вы получите автозагрузку бесплатно.

require 'vendor/autoload.php';

https://getcomposer.org/doc/01-basic-usage.md

+0

Так с другими словами, установить его во всем мире с композитором бесполезно, когда вы хотите сослаться на файлы классов из него? Потому что я обычно устанавливаю пакеты. – Vivendi

+0

Да, точно. Установка композитора во всем мире полезна. Все остальное управляется композитором. Это помогает, если у нас есть два отдельных проекта, но мы хотим использовать два разных варианта зависимости. –