web-dev-qa-db-ja.com

laravelに定数を追加するためのベストプラクティスは何ですか? (長いリスト)

私は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ファイルを追加しますか?

ありがとう

35
Faran Khan

アプリケーション全体でグローバルに使用されるほとんどの定数については、構成ファイルに保存するだけで十分です。また、非常に簡単です

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');
78
K Arun Singh

エイリアスクラス定数を使用します。

最初に、定数を含むクラスを作成します:App/MyApp.php for exemple

namespace App;

class MyApp {
   const MYCONST = 'val';
}

次に、config/app.phpのエイリアスクラスに追加します

'aliases' => [
  //...
  'MyApp' => App\MyApp::class,

最後に、好きな場所でそれらを使用します(コントローラーまたはブレード):

MyApp::MYCONST
22
Neekobus

あなたの質問は「ベストプラクティス」についてであり、「。envメソッド」について尋ねました。

.envは、environmentが変更されるために変更される変数専用です。さまざまな環境の例:テスト、受け入れ、生産。

したがって、.envにはデータベース資格情報、APIキーなどが含まれます。

.envには、(imho)すべての環境で同じ定数を含めることはできません。そのために推奨される構成ファイルを使用してください。

11
redcenter

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を実行してください

9
Dev Semicolon

まず、アプリディレクトリ内にConstantsフォルダーを作成します。

そして、Constants.phpを作成します。このファイルで定数を定義します

例えば ​​:

define('ONE', '1');
define('TWO', '2');

そして、composer.jsonを変更します

または、composer.jsonを使用して、次のコードを「autoload」セクションに追加することにより、bootstrap/constants.phpファイルをロードできます。

"autoload": {
    "files": [
        "bootstrap/constants.php"
    ]
}

composerを更新します!

7
Newbie_TT

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');
5
Adam

次のような別の方法:

  1. app/configディレクトリにconstant.phpファイルを作成します
  2. composer.jsonファイルで、次のようなディレクティブを追加します。

    "autoload": {
       "classmap": [
           "database/seeds",
           "database/factories"
       ],
       "psr-4": {
           "App\\": "app/"
       },
       "files": [
           "app/helpers.php",
           "app/config/constants.php"
       ]
    }
    
3
yangwendaxia