What is the best practice for adding constants in

2019-03-09 13:13发布

I am rather new to laravel. I have a basic question, What is the best way to add constants in laravel. I know the .env method that we use to add the constants. Also I have made one constants file to use them for my project. For example:

define('OPTION_ATTACHMENT', 13);
define('OPTION_EMAIL', 14);
define('OPTION_MONETERY', 15);
define('OPTION_RATINGS', 16);
define('OPTION_TEXTAREA', 17);

And so on. It can reach upto 100 or more records. So What should be the best approach to write the constants. The .env method. Or adding the constant.php file?

Thanks

7条回答
Rolldiameter
2楼-- · 2019-03-09 13:41

Another way as following:

  1. create the constant.php file in app/Constant directory
  2. in composer.json file, add the directives like this:

    "autoload": {
       "classmap": [
           "database/seeds",
           "database/factories"
       ],
       "psr-4": {
           "App\\": "app/"
       },
       "files": [
           "app/helpers.php",
           "app/config/constants.php"
       ]
    }
    
查看更多
劳资没心,怎么记你
3楼-- · 2019-03-09 13:43

You can create a file named paths.php in root directory/config/paths.php

Insert this data into paths.php

define('OPTION_ATTACHMENT', 13);
define('OPTION_EMAIL', 14);
define('OPTION_MONETERY', 15);
define('OPTION_RATINGS', 16);
define('OPTION_TEXTAREA', 17);

Note : make sure to run command : php artisan config:clear

查看更多
Lonely孤独者°
4楼-- · 2019-03-09 13:46

For most constants used globally across the application, storing them in config files is sufficient. It is also pretty simple

Create a new file in the config directory. Let's call it constants.php

In there you have to return an array of config values.

return [
    'options' => [
        'option_attachment' => '13',
        'option_email' => '14',
        'option_monetery' => '15',
        'option_ratings' => '16',
        'option_textarea' => '17',
    ]
];

And you can access them as follows

Config::get('constants.options');
// or if you want a specific one
Config::get('constants.options.option_attachment');
查看更多
小情绪 Triste *
5楼-- · 2019-03-09 13:53

In addition to Arun Singh's answer I would recommend you to use helpers.

Inside your helper.php you may define

if ( ! function_exists('constants'))
{
    function constants($key)
    {
       return config('constants.' . $key);
    }
}

Thus instead of

Config::get('constants.options.option_attachment');

you may call

constants('options.option_attachment');
查看更多
贼婆χ
6楼-- · 2019-03-09 14:00

First you make Constants folder inside your app directory.

And then you make Constants.php. Define your constants in this file

For Example :

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

And you modify the composer.json

Alternatively, you can use composer.json to load the bootstrap/constants.php file by adding the following code to the “autoload” section, like so:

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

And update your composer !

查看更多
forever°为你锁心
7楼-- · 2019-03-09 14:02

Your question was about the 'best practices' and you asked about the '.env method'.

.env is only for variables that change because the environment changes. Examples of different environments: test, acceptance, production.

So the .env contains database credentials, API keys, etc.

The .env should (imho) never contain constants which are the same over all environments. Just use the suggested config files for that.

查看更多
登录 后发表回答