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ここではanlutrocURLはその下のsrc/下のサブディレクトリにアクセスすることに相当するので、anlutrocURLLaravelcURLは実はanlutroフォルダの下のsrcフォルダの下のLaravelフォルダの下のcURLを参照することに相当する.phpファイル
ここのコードを見るとわかりやすくなりますコードではuse anlutrocURLLaravelcURLで定義済みaliasesを使用できます その他の相対仕様のパッケージここでは七牛雲の例 を挙げる.これらのパッケージは、Laravelの依存注入の考え方に非常に合致し、サービスプロバイダのクラス を所有しています.には、登録後のサービスを実行するためのイベントリスナーが表示されるので、appについてはマニュアルに従って知ることができる.phpのProvider配列にプロバイダが登録されているので、公式サイトのzgldhQiniuStorageQiniuFilesystemServiceProvider があります.同理ここにはpsr-4規範があるので、自分でバッグを建てるのもこのような考え方に従って を作ることができます.
ローカルでのみ使用されるパッケージ私达はlaracasts/generatorsで、多くのLaravel开発者がすべて使ったことがあるべきで、とても使いやすくて、このパッケージの特徴はphp artisanの基本的な机能を豊富にするので、もし制品がオンラインになるならば、きっとこの机能を必要としないで、だから公式の配置によって の違いはここでconfig/appではないということです.phpではなくapp/Providers/AppAppAppServiceProviderで構成されています.phpに配置されていますconfig/appに注意してください.phpのproviders配列の下にもこのファイルを導入する登録情報 がある.このようなパケットをこのような処理で処理するのは素晴らしい.類似のパケットには「sven/artisan-view」(ビューファイルを生成するパケット) がある.
大まかにこのようにして、作者はLaravelを学ぶ时间もそんなに长くありませんので、问题があってまた大神に指摘してもらいます、以上はすべてかばんの特徴によってソースコードを见て分析したので、どうしても考えられないところがあって、更にブログを见てください
いろいろな資料を探しましたが、vendorの中のバッグの使い方をあまり詳しく説明していません.自分で実験してまとめました.ここで説明します.
テンプレートvendorに付属のパッケージ
自分でcomposerでインストールしたパッケージ
なぜこのように設定するのか、antoloadのpsr-4仕様については、この例のanlutroフォルダのcomposerを見ることができます.json
"autoload": {
"psr-4": {
"anlutro\\cURL\\": "src/"
}
},
/**
* 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';
}
}
ここのコードを見るとわかりやすくなります
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()
{
//
}
}
"autoload": {
"psr-4": {
"zgldh\\QiniuStorage\\": "src/"
}
}
ローカルでのみ使用されるパッケージ
public function register()
{
if ($this->app->environment() == 'local') {
$this->app->register('Laracasts\Generators\GeneratorsServiceProvider');
}
}
/*
* Application Service Providers...
*/
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
大まかにこのようにして、作者はLaravelを学ぶ时间もそんなに长くありませんので、问题があってまた大神に指摘してもらいます、以上はすべてかばんの特徴によってソースコードを见て分析したので、どうしても考えられないところがあって、更にブログを见てください
by vampirebitter