Laravelを使い始めたばかりです。Laravel 4をベースフレームワークとして使用して、数年前に作成したシステム全体を書き直す必要があります。以前のシステムでは、constant.php
いくつかの定数が宣言されたglobals.php
ファイルと、多数の配列セット(たとえば、カテゴリステータス、イベントのタイプ、言語など)を含むファイルがありました。そうすることで、私は次のようなものを使うことができます
foreach ( $langs as $code => $domain ) {
// Some stuff
}
私のアプリのどこでも。
私の質問は、その情報をいわゆる「laravelの方法」でどのように保存できるかということです。ある種のオブジェクトを使用してこの情報を保存し、これをサービスとして設定し、ファサードを作成してみました。
app / libraries / Project / Constants.php
namespace PJ;
class Constants {
public static $langs = [
'es' => 'www.domain.es',
'en' => 'www.domain.us',
'uk' => 'www.domain.uk',
'br' => 'www.domain.br',
'it' => 'www.domain.it',
'de' => 'www.domain.de',
'fr' => 'www.domain.fr'
];
}
app / libraries / Project / ConstantsServiceProvider.php
namespace PJ;
use Illuminate\Support\ServiceProvider;
class ConstantsServiceProvider extends ServiceProvider {
public function register() {
$this->app->singleton('PJConstants', function() {
return new Constants;
});
}
}
app / libraries / Project / ConstantsFacade.php
namespace PJ;
use Illuminate\Support\Facades\Facade;
class ConstantsFacade extends Facade {
protected static function getFacadeAccessor() {
return 'PJConstants';
}
}
composer.json
"psr-4": {
"PJ\\": "app/libraries/Project"
},
そのため、そのプロパティにとしてアクセスしますPJ\Constants::$langs
。
これは機能しますが、それが最も効率的または正しい方法であるとは思えません。つまり、サービスプロバイダー全体やファサードなどを作成して、変数を「伝播」する正しい方法ですか?または、このデータをどこに置くべきですか?
アドバイスありがとうございます。
編集#01
データ私は、直接私のポストの冒頭の例のように、スクリプトで設定することができ、すべてのコントローラとビューに渡したい、しかし、それはまた、例えば、データベースから、動的に生成することができます。このデータは、カテゴリのリストである可能性があります。ナビゲーションバーを生成するには、すべてのビューでそれらが必要ですが、いくつかのルーティングパターン(など/category/subcategory/product
)を定義したり、いくつかのコントローラーでいくつかの情報を解析したりするためにも必要です(X製品を保持するカテゴリから情報を取得するなど)。
私の配列は次のようなものです:
$categories = [
1 => ['name' => 'General', 'parent' => 0, 'description' => 'Lorem ipsum...'],
2 => ['name' => 'Nature', 'parent' => 0, 'description' => 'Lorem ipsum...'],
3 => ['name' => 'World', 'parent' => 0, 'description' => 'Lorem ipsum...'],
4 => ['name' => 'Animals', 'parent' => 2, 'description' => 'Lorem ipsum...']
]
ちょうど例として。インデックスはカテゴリのIDであり、値はカテゴリに関連付けられた情報です。
この配列も、すべてのコントローラーとビューで使用できる必要があります。
それで、それを構成変数として保存する必要がありますか?これらのデータを他にどのように保存できますか。最良で意味的に正しい方法は何でしょうか?