私はlaravelにかなり新しいです。私は基本的な質問があります、laravelで定数を追加する最良の方法は何ですか?定数を追加するために使用する.envメソッドを知っています。また、プロジェクトで使用する定数ファイルを1つ作成しました。例えば:
define('OPTION_ATTACHMENT', 13);
define('OPTION_EMAIL', 14);
define('OPTION_MONETERY', 15);
define('OPTION_RATINGS', 16);
define('OPTION_TEXTAREA', 17);
等々。最大100件以上のレコードに到達できます。定数を書くための最良のアプローチは何でしょうか。 .envメソッド。または、constant.phpファイルを追加しますか?
ありがとう
アプリケーション全体でグローバルに使用されるほとんどの定数については、構成ファイルに保存するだけで十分です。また、非常に簡単です
config
ディレクトリに新しいファイルを作成します。 constants.php
と呼びましょう
そこでは設定値の配列を返さなければなりません。
return [
'options' => [
'option_attachment' => '13',
'option_email' => '14',
'option_monetery' => '15',
'option_ratings' => '16',
'option_textarea' => '17',
]
];
そして、次のようにアクセスできます
Config::get('constants.options');
// or if you want a specific one
Config::get('constants.options.option_attachment');
エイリアスクラス定数を使用します。
最初に、定数を含むクラスを作成します:App/MyApp.php
for exemple
namespace App;
class MyApp {
const MYCONST = 'val';
}
次に、config/app.php
のエイリアスクラスに追加します
'aliases' => [
//...
'MyApp' => App\MyApp::class,
最後に、好きな場所でそれらを使用します(コントローラーまたはブレード):
MyApp::MYCONST
あなたの質問は「ベストプラクティス」についてであり、「。envメソッド」について尋ねました。
.envは、environmentが変更されるために変更される変数専用です。さまざまな環境の例:テスト、受け入れ、生産。
したがって、.envにはデータベース資格情報、APIキーなどが含まれます。
.envには、(imho)すべての環境で同じ定数を含めることはできません。そのために推奨される構成ファイルを使用してください。
paths.php in root directory/config/paths.phpという名前のファイルを作成できます
このデータをpaths.phpに挿入します
define('OPTION_ATTACHMENT', 13);
define('OPTION_EMAIL', 14);
define('OPTION_MONETERY', 15);
define('OPTION_RATINGS', 16);
define('OPTION_TEXTAREA', 17);
注:必ずコマンドphp artisan config:clear
を実行してください
まず、アプリディレクトリ内にConstants
フォルダーを作成します。
そして、Constants.php
を作成します。このファイルで定数を定義します
例えば :
define('ONE', '1');
define('TWO', '2');
そして、composer.json
を変更します
または、composer.jsonを使用して、次のコードを「autoload」セクションに追加することにより、bootstrap/constants.phpファイルをロードできます。
"autoload": {
"files": [
"bootstrap/constants.php"
]
}
composerを更新します!
Arun Singhの答えに加えて、 helpers を使用することをお勧めします。
helper.php
内で定義できます
if ( ! function_exists('constants'))
{
function constants($key)
{
return config('constants.' . $key);
}
}
したがって、代わりに
Config::get('constants.options');
Config::get('constants.options.option_attachment');
あなたは電話してもよい
constants('options');
constants('options.option_attachment');
次のような別の方法:
composer.jsonファイルで、次のようなディレクティブを追加します。
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
},
"files": [
"app/helpers.php",
"app/config/constants.php"
]
}