如何为整个项目定义一些常量?

时间:2016-12-13 13:14:51

标签: php laravel configuration composer-php constants

Here is my directory (the screen-shot in this link)。另外我还有一个名为config.php的文件,其中包含一些变量,如下所示:

<?php

    // db
    $dbname = 'mydb';
    $db_username = 'root';
    $db_password = '';

    // login
    $l_email = 'some@one.com';
    $l_password = 'mypas'

    // details
    $sleep_on_error = 1; // per sec

    // and etc 
    // .
    // .
    // .

?>

如您所见,我有一些存储在config.php文件中的变量。我可能需要在项目的每个部分中使用这些变量。所以我需要在整个项目中访问config.php文件。所以我可以将config.php文件添加到composer中,以便在整个项目中访问它。像这样:

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "files": [
        "app/classes/config.php"
    ]
},

我所要做的就是为我的项目实施一个简单的配置系统。请告诉我,我做得对吗?或者我应该为此定义一个类?或者我所做的一切都是错的,我还应该做点什么呢?

简而言之,为项目进行配置的最佳结构是什么?

5 个答案:

答案 0 :(得分:4)

Laravel方式正在使用config files。创建/config并将其放在config('my.variable') 目录中,然后全局访问常量值:

my.php

以下是<?php return [ 'variable' => 15, 'some-array' => [1, 2, 5], ];

的示例
void Main()
{
  System.Data.SQLite.SQLiteConnection con = new System.Data.SQLite.SQLiteConnection( @"Data Source="+FilePath );
  SQLiteQueryProvider provider = new SQLiteQueryProvider(con, new ImplicitMapping(), QueryPolicy.Default);
    var data = provider.GetTable<MyTable>("MyTable")
    .Where(mt => mt.Level1 == "M_TO" && mt.AggCode == "C_DTA")
    .GroupBy(mt => new {mt.Date, mt.CompanyName})
    .Select(mt => new
     {
         Date = mt.Key.Date
         CompanyName = mt.Key.CompanyName,
         Sum = mt.Sum(t => t.Amount)
     }
    ).ToList();

答案 1 :(得分:2)

这很简单,只需两步:

1)constants.php下创建一个名为config/app的文件,并将值放在数组形式中,如:

return [
    'APP_NAMEIS' => 'myappname'
];

经过上述步骤,
2)使用Config Facade在任何地方使用该代码:

Config::get('constants.APP_NAMEIS');

希望这清楚,如何在任何地方使用常数。请参阅more detail的附件参考。

答案 2 :(得分:1)

您可以创建一个像@Alexey Mezenim建议的文件 - 在admin-settings.php目录中说/config,并用包含全局所需的常量/值的数组填充

//admin-config.php
<?php

    return[
        'db' => [
                   'name' => 'mydb',
                   'username' => 'root',
                   'password' =>''
                ],
         'login' => [
                       'email' =>'some@one.com',
                       'password' => 'mypas'
                    ],
         'sleep_on_error' => 1
    ];  

然后,您可以在应用程序的任何位置访问值

config('admin-config.db.name')

config('admin-config.login.email')

config('admin-config/sleep_on_error')  

//and so on

答案 3 :(得分:0)

您可以轻松地从

等文件中添加常量配置
<? // conf.php
$config = ['dbname' => 'test'];
return $config;

define('config', include('conf.php'));

echo config['dbname'];

答案 4 :(得分:0)

这就是我在Laravel 5.2应用程序中的表现

首先在constants.php下创建一个名为my_app/bootstrap/的php文件,并在此文件中写出整个应用程序所需的所有常量;

constants.php

的示例视图
if (!defined('LOGO_URL')) {
    define('LOGO_URL', SITEURL . '/images/' . 'logo.png');
}

if (!defined('GRAVATAR_SIZE')) {
    define('GRAVATAR_SIZE', 100);
}

if (!defined('SITE_NAME')) {
    define('SITE_NAME', 'My App');
}

然后requiremy_app/bootstrap/autoload.php像这样

require __DIR__ . '/constants.php';

现在我可以在整个应用程序中访问此变量!

希望这有帮助!