2016-12-07 3 views
0

Я хотел бы использовать следующие GitHub репо в моем приложении Laravel:Какие шаги требуется для добавления репо GitHub в приложение Laravel?

https://github.com/khanamiryan/php-qrcode-detector-decoder

Он не композитор создан и не может быть найден из Packagist. Я попытался использовать обычный php_require, но он говорит мне, что «Class» App \ Http \ Controllers \ QrReader «не найден».

Использование php_require в любом случае не так. Каков правильный способ справиться с такой ситуацией?

+0

http: // stackoverflow.com/questions/16273746/composer-packages-autoloading-non-class-based-files – Farkie

ответ

2

Создайте новый каталог в приложение корня

mkdir third-party 
cd third-party 

Clone репо

git clone https://github.com/khanamiryan/php-qrcode-detector-decoder 

Редактировать файл composer.json и добавить его в classmap: карты класса

"classmap": [ 
    "database", 
    "third-party/php-qrcode-detector-decoder" 
], 

Update:

composer dumpautoload 

И вы должны увидеть в вашем vendor/composer/autoload_classmap.php

'Zxing\\Binarizer' => $baseDir . '/third-party/php-qrcode-detector-decoder/lib/Binarizer.php', 
'Zxing\\BinaryBitmap' => $baseDir . '/third-party/php-qrcode-detector-decoder/lib/BinaryBitmap.php', 
... 

Тогда вам просто необходимо использовать:

use Zxing\Reader; 
+0

Спасибо, сэр! Ответ на ваш вопрос и MacPrawns помог мне добиться успеха. – kmukku

0

Я думаю, что основным классом является QrReader(). Вы можете использовать этот класс как класс контроллера, но вам нужно расширить класс контроллера и исправить импорт. Вы можете импортировать этот класс в качестве стороннего класса на свой контроллер laravel. Вам нужно использовать класс QrReader()? Затем просто поместите все файлы библиотеки App \ Libraries и основной класс в App \ classes. Или вы можете сделать это по-своему. Но следовать следующему 1) Управление пространств имен 2) импортировать класс к контроллеру с помощью

use App\classes\QrReader 

Наконец, вы будете иметь доступ ко всем методам, определенных в импортированной классе. Но в вашем основном классе вам нужно исправить путь и зависимости файлов библиотек.

Вы можете попробовать этот учебник тоже: How to use external classes

Вы можете прочитать обсуждение здесь (Ницца) Best way to import third party classes

+0

Что вы думаете о том, чтобы развернуть существующее репо, добавив файл-композитор и отправив его Packagist? Это будет все, чтобы заставить это работать правильно? Тогда я мог бы просто добавить необходимые строки в config/app.php (провайдеры и псевдонимы). – kmukku

+0

Да, вы можете это сделать, но я думаю, что вам придется столкнуться с проблемой зависимостей. Я думаю, вам нужно сделать больше с этим подходом. Хорошая идея, но для меня я пойду с простым способом ... мы можем сделать с композитором, и это будет хороший способ, управляемый способ сделать tooo ... Мне нужно попробовать раз посмотреть. – webDev

+0

Ответ от "Antonio Carlos Ribeiro" является лучшим, что вы ищете – webDev

0

Поскольку этот проект github не имеет файла composer.json, я не думаю, что вы можете использовать его с композитором.

Однако вы можете разделить репо, создать свою собственную копию и добавить к ней файл-композитор. Затем вы сможете добавить его в файл вашего композитора основного проекта:

{ 
"repositories": [ 
    { 
     "type": "git", 
     "url": "https://github.com/your-git-account/php-qrcode-detector-decoder" 
    } 
], 
"require": { 
    "your-git-account/php-qrcode-detector-decoder": "dev-master" 
} 

Надеюсь, это поможет!

(Источник https://getcomposer.org/doc/05-repositories.md#loading-a-package-from-a-vcs-repository)

+0

Мне нравится этот путь. Как насчет пространств имен? Должен ли я добавить что-то в config \ app.php? – kmukku

+0

Правильно, поэтому после того, как были добавлены файлы композитора (работающий композитор обновит ваш-git-account/php-qrcode-детектор-декодер), это просто делает код доступным локально для вашего приложения Laravel. Чтобы использовать этот код, вы, вероятно, захотите использовать [https://laravel.com/docs/5.3/providers](service provider) или что-то в этом роде, чтобы обернуть возможности этого модуля. – MacPrawn

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