2013-06-19 2 views
7

В настоящее время я работаю над Laravel 4. Я добавил следующее к моему composer.json, и побежал обновление:Композитор не автозагрузка пакет

"require": { 
     ... 
     "koraktor/steam-condenser": "*" 

пакет: https://packagist.org/packages/koraktor/steam-condenser

проблема у меня в том, что если я называю один из классов, которые он использует, например:

$steamUser = new SteamId('000000000000000000'); 
echo "Welcome, " . $steamUser->getNickname() . "<br />"; 

Я получаю ошибку Class 'SteamId' not found

Если я вручную необходим файл, необходимый, то он работает отлично:

require_once('/home/path-to-laravel/laravel/vendor/koraktor/steam-condenser/lib/steam-condenser.php'); 

Я побежал composer dump-autoload и до сих пор не работает. Кто-нибудь знает, почему это? . Это действительно расстраивает меня :(

ответ

9

Конденсатор пара (пока) совместимый с PSR-0, так что вы должны использовать другой подход автозагрузку (см http://getcomposer.org/doc/04-schema.md#autoload)

Использование метода files должно быть лучше всего подходит здесь:.

{ 
    "autoload": { 
     "files": ["vendor/koraktor/steam-condenser/lib/steam-condenser.php"] 
    } 
} 
+0

Koraktor это работает! Большое спасибо за то, что нашли время, чтобы изучить его. – Alias

+0

На самом деле, classmap может быть лучшим решением. 'files' просто заставляет файл загружайтесь, даже если вы не используете классы там. «classmap» с другой стороны позволяет автозагрузчику находить классы и загружать их только по требованию. –

+0

Хм, глядя на него кажется, что 'files' действительно правильный выбор. Загружаемый файл не просто загружает классы, но также содержит некоторые данные, необходимые им. –

1

Просто требует пакет, не заставит композитора автозагрузку пакет

Посмотрите в автозагрузкой с композитором, но что-то вроде это должно вам начать работу:

autoload: { 
    "classmap": ["vendor/koraktor/steam-condenso/lib"] 
} 
+0

Спасибо (в этом есть опечатка). Я запутался, хотя другие пакеты, которые я использовал (например, HybridAuth), буквально работали из коробки, не нужно ничего добавлять, но с этим я сделал? Он загружает файлы. Однако я получаю сообщение об ошибке «Использование неопределенной константы STEAM_CONDENSER_PATH - предполагается« STEAM_CONDENSER_PATH »- я предполагаю, что это потому, что он не загружает файл, который определяет это. – Alias

+0

Посмотрите на код и посмотрите, где это определение происходит, и выясните, – DaGardner

+0

Происходит в файле "steam-condenser.php": define ('STEAM_CONDENSER_PATH', dirname (__ FILE__). '/'); Поэтому я предполагаю, что нет ... но он находится в каталоге/lib/который является нечетным! – Alias

Смежные вопросы