Far*_*han 39 php constants laravel laravel-5 laravel-5.3
我对laravel很新.我有一个基本问题,在laravel中添加常量的最佳方法是什么.我知道我们用来添加常量的.env方法.我还制作了一个常量文件,用于我的项目.例如:
define('OPTION_ATTACHMENT', 13);
define('OPTION_EMAIL', 14);
define('OPTION_MONETERY', 15);
define('OPTION_RATINGS', 16);
define('OPTION_TEXTAREA', 17);
Run Code Online (Sandbox Code Playgroud)
等等.它可以达到100或更多记录.那么编写常量的最佳方法应该是什么..env方法.或者添加constant.php文件?
谢谢
K A*_*ngh 84
对于应用程序中全局使用的大多数常量,将它们存储在配置文件中就足够了.它也很简单
在config目录中创建一个新文件.我们称之为constants.php
在那里你必须返回一个配置值数组.
return [
'options' => [
'option_attachment' => '13',
'option_email' => '14',
'option_monetery' => '15',
'option_ratings' => '16',
'option_textarea' => '17',
]
];
Run Code Online (Sandbox Code Playgroud)
您可以按如下方式访问它们
Config::get('constants.options');
// or if you want a specific one
Config::get('constants.options.option_attachment');
Run Code Online (Sandbox Code Playgroud)
Nee*_*bus 27
我使用别名类常量:
首先,创建包含常量的类:App/MyApp.php例如
namespace App;
class MyApp {
const MYCONST = 'val';
}
Run Code Online (Sandbox Code Playgroud)
然后将其添加到的别名类中 config/app.php
'aliases' => [
//...
'MyApp' => App\MyApp::class,
Run Code Online (Sandbox Code Playgroud)
最后在任何地方使用它们(控制器甚至刀片):
MyApp::MYCONST
Run Code Online (Sandbox Code Playgroud)
小智 14
我会亲自为此创建一个课程。
<?php
namespace App\Transaction\Constants;
/**
* Class TransactionTypeConstant.
*/
final class TransactionTypeConstant
{
public const TYPE_CREDIT = 'CREDIT';
public const TYPE_DEBIT = 'DEBIT';
}
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
<?php
namespace App\Transaction;
use App\Transaction\Constants\TransactionTypeConstant;
class Transaction
{
/**
* Execute the task.
*
* @return object
*/
public function run()
{
if ($transaction->type === TransactionTypeConstant::TYPE_DEBIT) {
//do something
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 12
另一种方式如下:
在 composer.json 文件中,添加如下指令:
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
},
"files": [
"app/helpers.php",
"app/config/constants.php"
]
}
Run Code Online (Sandbox Code Playgroud)小智 11
你的问题是关于'最佳实践',你问的是'.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);
Run Code Online (Sandbox Code Playgroud)
注意:确保运行命令: php artisan config:clear
首先,Constants在应用目录中创建文件夹。
然后你做Constants.php。在此文件中定义常量
例如 :
define('ONE', '1');
define('TWO', '2');
Run Code Online (Sandbox Code Playgroud)
然后您修改 composer.json
另外,您可以使用composer.json通过将以下代码添加到“ autoload”部分来加载bootstrap / constants.php文件,如下所示:
"autoload": {
"files": [
"bootstrap/constants.php"
]
}
Run Code Online (Sandbox Code Playgroud)
并更新您的作曲家!
除了阿伦·辛格(Arun Singh)的答案外,我建议您使用帮助器。
在您的内部,您helper.php可以定义
if ( ! function_exists('constants'))
{
function constants($key)
{
return config('constants.' . $key);
}
}
Run Code Online (Sandbox Code Playgroud)
因此,代替
Config::get('constants.options');
Config::get('constants.options.option_attachment');
Run Code Online (Sandbox Code Playgroud)
你可以打电话
constants('options');
constants('options.option_attachment');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45895 次 |
| 最近记录: |