2016-12-07 1 views
0

Ich möchte in meiner Laravel Anwendung folgende GitHub Repo verwenden:Welche Schritte zum Hinzufügen von GitHub Repo zu Laravel-Anwendung?

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

Es ist nicht Komponist up hat festgelegt, noch kann sie von Packagist finden. Ich habe versucht, reguläre php_require zu verwenden, aber es sagt mir "Class 'App \ Http \ Controllers \ QrReader' nicht gefunden".

Die Verwendung von php_require fühlt sich sowieso falsch an. Wie ist der richtige Umgang mit einer solchen Situation?

+0

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

Antwort

2

Erstellen Sie ein neues Verzeichnis in der App root

mkdir third-party 
cd third-party 

Clone der Repo

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

Bearbeiten Sie Ihre composer.json und fügen Sie es dem classmap:

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

Update-Klasse Karten:

composer dumpautoload 

Und Sie sollten Sie in Ihrem 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', 
... 

Dann einfach sehen muss es verwenden:

use Zxing\Reader; 
+0

Vielen Dank, mein Herr! Ihre und MacPrawns Antwort hat mir geholfen, die Dinge ins Rollen zu bringen. – kmukku

0

Ich denke, die wichtigste Klasse ist QrReader(). Sie können diese Klasse als Controller-Klasse verwenden, aber Sie müssen die Controller-Klasse erweitern und Importe korrigieren. Sie können diese Klasse auch als Third-Party-Klasse auf Ihrem Laravel-Controller importieren. Müssen Sie die QrReader() Klasse verwenden? Dann legen Sie einfach alle Bibliotheksdateien App \ Bibliotheken und die Hauptklasse in App \ Klassen. Oder Sie können es auch auf unsere Art tun. Aber folgen Sie den folgenden 1) Verwalten von Namespaces 2) importieren, um die Klasse zu Ihrem Controller unter Verwendung

use App\classes\QrReader 

Schließlich haben Sie Zugriff auf alle Methoden in der importierten Klasse definiert haben. Aber in Ihrer Hauptklasse müssen Sie den Pfad und die Abhängigkeiten von Bibliotheksdateien korrigieren.

können Sie dieses Tutorial versuchen zu: How to use external classes

Sie die Diskussion hier lesen (Nice) Best way to import third party classes

+0

Was denkst du über das Forking des bestehenden Repos, das Hinzufügen der Composer-Datei und das Senden an Packagist? Wäre das alles um richtig zu funktionieren? Dann könnte ich einfach die notwendigen Zeilen zu config/app.php (Provider und Aliase) hinzufügen. – kmukku

+0

Ja, Sie können das tun, aber ich denke, Sie werden das Problem der Abhängigkeiten haben. Sie müssen etwas mehr mit diesem Ansatz tun, denke ich. Schöne Idee, aber für mich werde ich mit dem einfachen Weg gehen ... wir können mit dem Komponisten tun, und das wird der gute Weg, verwaltet Weg zu tun ... Ich muss einmal versuchen, um zu sehen. – webDev

+0

die Antwort von "Antonio Carlos Ribeiro" ist das Beste, was Sie suchen – webDev

0

Da dieses GitHub-Projekt keine composer.json-Datei enthält, glaube ich nicht, dass Sie es mit Composer verwenden können.

Sie könnten jedoch das Repo verzweigen, eine eigene Kopie erstellen und eine Composer-Datei hinzufügen. Dann könntest du es der composer.json-Datei deines Hauptprojekts hinzufügen:

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

Hoffe, das hilft!

(Quelle https://getcomposer.org/doc/05-repositories.md#loading-a-package-from-a-vcs-repository)

+0

Ich mag diesen Weg. Was ist mit Namespaces? Sollte ich etwas zu config \ app.php hinzufügen? – kmukku

+0

Richtig, also sobald die Composer-Dateien enthalten sind (laufendes Composer-Update your-git-account/php-qrcode-detector-decoder), wird der Code nur lokal für die Verwendung Ihrer Laravel-App verfügbar gemacht. Um den Code tatsächlich zu verwenden, werden Sie wahrscheinlich einen [https://laravel.com/docs/5.3/providers] (Dienstanbieter) oder etwas Ähnliches verwenden, um die Fähigkeiten dieses Moduls zu umschließen. – MacPrawn

Verwandte Themen