Laravelパッケージ導入の詳細

11511 ワード

Vendorパッケージ
  • Vendorパッケージ
  • テンプレートvendorに付属のパッケージ
  • 自分用composerインストールパッケージ
  • その他の相対仕様のパケット
  • ローカルでのみ使用するパッケージ


  • いろいろな資料を探しましたが、vendorの中のバッグの使い方をあまり詳しく説明していません.自分で実験してまとめました.ここで説明します.
    テンプレートvendorに付属のパッケージ
  • laravel、composerなどのバッグに似ていて、テンプレートはすでにProvider、aliasesなどのものを書いてあるので、直接使うことができますが、ここでは詳しくは言いません.
  • 別名設定(aliases)はconfig/app.phpでは
  • が見つかります
    自分でcomposerでインストールしたパッケージ
  • 例えばプロジェクトでパッケージされたcurlクラス、例えばanlutro/curlを使いたいのですが、composerでインストールした後、このクラスを順調に使うにはconfig/appが必要です.phpのaliases配列に*‘cURL’=>‘anlutrocURLLaravelcURL’*
  • を付ける
    なぜこのように設定するのか、antoloadのpsr-4仕様については、この例のanlutroフォルダのcomposerを見ることができます.json
    "autoload": {
            "psr-4": {
                "anlutro\\cURL\\": "src/"
            }
        },
  • ここではanlutrocURLはその下のsrc/下のサブディレクトリにアクセスすることに相当するので、anlutrocURLLaravelcURLは実はanlutroフォルダの下のsrcフォルダの下のLaravelフォルダの下のcURLを参照することに相当する.phpファイル
  • /**
     * PHP OOP cURL
     * 
     * @author   Andreas Lutro @gmail.com>
     * @license  http://opensource.org/licenses/MIT
     * @package  PHP cURL
     */
    
    namespace anlutro\cURL\Laravel;
    
    use Illuminate\Support\Facades\Facade;
    
    /**
     * cURL facade class.
     */
    class cURL extends Facade
    {
        public static function getFacadeAccessor()
        {
            return 'anlutro\cURL\cURL';
        }
    }

    ここのコードを見るとわかりやすくなります
  • コードではuse anlutrocURLLaravelcURLで定義済みaliasesを使用できます
  • その他の相対仕様のパッケージ
  • ここでは七牛雲の例
  • を挙げる.
  • これらのパッケージは、Laravelの依存注入の考え方に非常に合致し、サービスプロバイダのクラス
  • を所有しています.
     namespace zgldh\QiniuStorage;
    use League\Flysystem\Filesystem;
    use Illuminate\Support\ServiceProvider;
    use zgldh\QiniuStorage\Plugins\DownloadUrl;
    use zgldh\QiniuStorage\Plugins\ImageExif;
    use zgldh\QiniuStorage\Plugins\ImageInfo;
    use zgldh\QiniuStorage\Plugins\ImagePreviewUrl;
    use zgldh\QiniuStorage\Plugins\PersistentFop;
    use zgldh\QiniuStorage\Plugins\PersistentStatus;
    use zgldh\QiniuStorage\Plugins\PrivateDownloadUrl;
    use zgldh\QiniuStorage\Plugins\UploadToken;
    use zgldh\QiniuStorage\Plugins\PrivateImagePreviewUrl;
    use zgldh\QiniuStorage\Plugins\VerifyCallback;
    class QiniuFilesystemServiceProvider extends ServiceProvider
    {
        public function boot()
        {
            \Storage::extend(
                'qiniu',
                function ($app, $config) {
                    if (isset($config['domains'])) {
                        $domains = $config['domains'];
                    } else {
                        $domains = [
                            'default' => $config['domain'],
                            'https'   => null,
                            'custom'  => null
                        ];
                    }
                    $qiniu_adapter = new QiniuAdapter(
                        $config['access_key'],
                        $config['secret_key'],
                        $config['bucket'],
                        $domains,
                        $config['notify_url']?$config['notify_url']:null
                    );
                    $file_system = new Filesystem($qiniu_adapter);
                    $file_system->addPlugin(new PrivateDownloadUrl());
                    $file_system->addPlugin(new DownloadUrl());
                    $file_system->addPlugin(new ImageInfo());
                    $file_system->addPlugin(new ImageExif());
                    $file_system->addPlugin(new ImagePreviewUrl());
                    $file_system->addPlugin(new PersistentFop());
                    $file_system->addPlugin(new PersistentStatus());
                    $file_system->addPlugin(new UploadToken());
                    $file_system->addPlugin(new PrivateImagePreviewUrl());
                    $file_system->addPlugin(new VerifyCallback());
                    return $file_system;
                }
            );
        }
        public function register()
        {
            //
        }
    }
  • には、登録後のサービスを実行するためのイベントリスナーが表示されるので、appについてはマニュアルに従って知ることができる.phpのProvider配列にプロバイダが登録されているので、公式サイトのzgldhQiniuStorageQiniuFilesystemServiceProvider
  • があります.
    "autoload": {
            "psr-4": {
                "zgldh\\QiniuStorage\\": "src/"
            }
        }
  • 同理ここにはpsr-4規範があるので、自分でバッグを建てるのもこのような考え方に従って
  • を作ることができます.
    ローカルでのみ使用されるパッケージ
  • 私达はlaracasts/generatorsで、多くのLaravel开発者がすべて使ったことがあるべきで、とても使いやすくて、このパッケージの特徴はphp artisanの基本的な机能を豊富にするので、もし制品がオンラインになるならば、きっとこの机能を必要としないで、だから公式の配置によって
  • public function register()
    {
        if ($this->app->environment() == 'local') {
            $this->app->register('Laracasts\Generators\GeneratorsServiceProvider');
        }
    }
  • の違いはここでconfig/appではないということです.phpではなくapp/Providers/AppAppAppServiceProviderで構成されています.phpに配置されていますconfig/appに注意してください.phpのproviders配列の下にもこのファイルを導入する登録情報
  • がある.
    /*
             * Application Service Providers...
             */
            App\Providers\AppServiceProvider::class,
            App\Providers\AuthServiceProvider::class,
            App\Providers\EventServiceProvider::class,
            App\Providers\RouteServiceProvider::class,
    
  • このようなパケットをこのような処理で処理するのは素晴らしい.類似のパケットには「sven/artisan-view」(ビューファイルを生成するパケット)
  • がある.
    大まかにこのようにして、作者はLaravelを学ぶ时间もそんなに长くありませんので、问题があってまた大神に指摘してもらいます、以上はすべてかばんの特徴によってソースコードを见て分析したので、どうしても考えられないところがあって、更にブログを见てください
                                                            by vampirebitter