良い一日!
読めば読むほど、これについて混乱します。ファサードとエイリアスの違いは何ですか?
私はこのクラスを持っています:
/app/libraries/Project/Data.php
namespace PJ;
class Data {
// It is much like a data container, with static methods and properties for saving info
}
そして、対応するファサードなので、PJD::だけを使用してアクセスできます。
いくつかのウェブページによると:
... Laravel Facade はプロキシです。それらはラップアラウンドし、コードの真の実装の基礎となる関数を呼び出します。さらに、Laravel アプリケーションのコンテキストでは、これらの Facade はエイリアスに割り当てることによってアクセスされます。このように依存性注入コンテナーを使用すると、File を呼び出すだけで Illuminate\Support\Facades\Filesystem などを参照できます。( http://ryantablada.com/post/proxies-service-locators-alias-facades-and-war )
しかし、次のようなものを追加することも発見し、テストに成功しました。
__app/config/app.php__
'aliases' => array(
//....,
'PJD' => 'PJ\Data',
),
同じ方法でクラスにアクセスすることもできます。
それで、違いは何ですか?
ありがとう
編集 #01
/app/libraries/Project/Data.phpに Data という名前のクラスを作成しました
namespace PJ;
class Data {
// It is much like a data container, with static methods and properties for saving info
}
このクラス データ/app/libraries/Project/DataFacade.phpのファサード クラスがあります。
use Illuminate\Support\Facades\Facade;
class PJD extends Facade {
protected static function getFacadeAccessor() {
return 'PJData';
}
}
そして、私はそれらのためのサービスプロバイダーを持っています: /app/libraries/Project/DataServiceProvider.php
use Illuminate\Support\ServiceProvider;
class DataServiceProvider extends ServiceProvider {
public function register() {
$this->app->singleton('PJData', function() {
return new PJ\Data;
});
}
}
/app/config/app.phpにも追加しました:
'providers' => array(
// ....
'DataServiceProvider',
),
composer.jsonにpsr-4 行を追加して、PJ 名前空間を /app/libraries/Project に誘導しました
"psr-4": {
"PJ\\": "app/libraries/Project"
},
これらすべてを行うことで、PJ\Data:: の代わりに PJD:: を使用するだけで、プロジェクトのどこからでもクラスにアクセスできます。
ただし、 /app/config/app.phpに追加するだけで気付きました
'aliases' => array(
//....,
'PJD' => 'PJ\Data',
),
ファサードと ServiceProvider がなくても、まったく同じ結果が得られます。それで、どちらかのポイントは何ですか?
ありがとう、そして大きな投稿でごめんなさい。