我对laravel很新。我有一个基本问题,在laravel中添加常量的最佳方法是什么。我知道我们用来添加常量的.env方法。我还制作了一个常量文件,用于我的项目。例如:
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
例如
namespace App;
class MyApp {
const MYCONST = 'val';
}
然后将其添加到config/app.php
中的别名类中
'aliases' => [
//...
'MyApp' => App\MyApp::class,
最后在任何地方使用它们(控制器甚至刀片):
MyApp::MYCONST
你的问题是关于'最佳实践',你问的是'.env方法'。
.env仅适用于因环境变化而发生变化的变量。不同环境的例子:测试,验收,生产。
因此.env包含数据库凭据,API密钥等。
.env应该(imho)永远不会包含在所有环境中相同的常量。只需使用建议的配置文件。
您可以在根目录/ config / paths.php中创建名为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
首先,在app目录中创建Constants
文件夹。
然后你制作Constants.php
。在此文件中定义常量
例如 :
define('ONE', '1');
define('TWO', '2');
你修改了composer.json
或者,您可以使用composer.json通过将以下代码添加到“autoload”部分来加载bootstrap / constants.php文件,如下所示:
"autoload": {
"files": [
"bootstrap/constants.php"
]
}
并更新你的作曲家!
除了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');
另一种方式如下:
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
},
"files": [
"app/helpers.php",
"app/config/constants.php"
]
}