2016-12-07 6 views
0

私はLaravelアプリケーションで、以下のGitHubのレポを使用したい:LaravelアプリケーションにGitHubリポジトリを追加するために必要な手順は?

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

それは作曲が設定されていないも、それはPackagistから見つけることができます。私は通常のphp_requireを使用しようとしましたが、 "Class 'App \ Http \ Controllers \ QrReader' not found"と表示されます。

php_requireの使用が間違っています。このような状況を処理する正しい方法は何ですか?

+0

http:// stackoverflowcom/questions/16273746/composer-packages-autoloading-non-class-based-files – Farkie

答えて

2

を読むことができるアプリのルート

mkdir third-party 
cd third-party 

クローンレポに新しいディレクトリを作成します。

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

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', 
... 

に見るべきであるあなただけ:

編集しcomposer.jsonファイルとクラスマップに追加します。

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

更新クラスマップそれを使用する必要があります:

use Zxing\Reader; 
+0

ありがとうございました!あなたとMacPrawnの回答は物事が圧延されるのを助けました。 – kmukku

0

私は主なクラスはQrReader()だと思います。このクラスはコントローラクラスとして使用できますが、コントローラクラスを拡張してインポートを修正する必要があります。このクラスをララベルコントローラのサードパーティクラスとしてインポートすることもできます。 QrReader()クラスを使用する必要がありますか? 次に、すべてのライブラリファイルApp \ LibrariesとメインクラスをApp \ classesに配置します。それとも自分のやり方でやることもできます。しかし、最後に、インポートしたクラスで定義されたすべてのメソッドにアクセスする必要があります

use App\classes\QrReader 

を使用することにより、以下の 1)の管理名前空間 2)あなたのコントローラにクラスをインポートするに従ってください。しかし、あなたのメインクラスでは、ライブラリファイルのパスと依存関係を修正する必要があります。

あなたもこのチュートリアルを試すことができます。 How to use external classes

あなたが現在議論(ニース) Best way to import third party classes

+0

既存のレポをフォークし、コンポーザファイルを追加してPackagistに提出することについてどう思いますか?これが正しく動作するようにするには、それはすべてでしょうか?それからconfig/app.php(プロバイダとエイリアス)に必要な行を追加するだけです。 – kmukku

+0

はい、それを行うことができますが、私はヨーヨーが依存関係の問題に直面すると思います。あなたは私が思うそのアプローチでより多くのことを行う必要があります。 素敵なアイデアだけど、私にとっては簡単な方法で行くだろう...作曲家と一緒にやることができ、それは良い方法で、トゥーにやり遂げることができる方法だ。一度試してみる必要がある。 – webDev

+0

"Antonio Carlos Ribeiro"の回答は、あなたが探している最高のものです – webDev

0

このgithubプロジェクトにはcomposer.jsonファイルがないので、コンポーザーで使用することはできません。

ただし、リポジトリをブランチし、独自のコピーを作成して、コンポーザファイルを追加することもできます。次に、メインプロジェクトの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

さて、作曲者ファイルが含まれていれば(実行中の作曲家はyour-git-account/php-qrcode-detector-decoderを更新します)、Laravelアプリケーションでコードをローカルで利用できるようになります。 コードを実際に使用するには、このモジュールの機能をラップするために、[https://laravel.com/docs/5.3/providers](サービスプロバイダ)などを使用することをお勧めします。 – MacPrawn

関連する問題