【问题标题】:Defining configuration values under specific namespaces?在特定命名空间下定义配置值?
【发布时间】:2016-06-20 03:48:24
【问题描述】:

我正在编写一个框架,并且刚刚添加了命名空间。除了配置值之外,我转换所有内容都没有问题。

我可以很容易地定义常量,所以单个值不是问题……但是值数组呢?

以这个数组为例,它是用于添加到 Capsule 的连接的配置数组...

[
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'DB_NAME',
    'username'  => 'USERNAME',
    'password'  => 'PASSWORD',
    'charset'   => 'utf8',
    'collation' => 'utf8_general_ci',
    'prefix'    => ''
  ]

我一直在使用类似这样的文件进行数据库配置...

<?php

  namespace BareBones;

  use Illuminate\Database\Capsule\Manager as Capsule;

  $BareBonesCapsule = new Capsule;

  $BareBonesCapsule->addConnection([
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'DB_NAME',
    'username'  => 'USERNAME',
    'password'  => 'PASSWORD',
    'charset'   => 'utf8',
    'collation' => 'utf8_general_ci',
    'prefix'    => ''
  ]);

  $BareBonesCapsule->setAsGlobal();
  $BareBonesCapsule->bootEloquent();

  use Illuminate\Database\Schema\Blueprint as Blueprint;
  use Illuminate\Database\Eloquent\Model as Eloquent;

我将从我的主要 App 类开始引导 Eloquent。这将阻止全局变量执行此操作。虽然不太可能使用$BareBonesCapsule,但我仍然希望保持我的框架干净并将所有内容都保留在它的命名空间中。

我可以在配置文件中声明一堆常量...

<?php

  namesapce BareBones;

  define("driver", "mysql");
  define("host", "localhost");
  define("database", "DB_NAME");
  /* etc... */

这似乎不是很干净,我假设有更好的方法来做到这一点。其他框架如何处理这个问题,在保持与全局命名空间分离的同时,我有哪些替代配置方式?

【问题讨论】:

    标签: php arrays configuration namespaces global


    【解决方案1】:

    您可以使用 .ini 文件并将它们分成如下部分:

    ; This is a sample configuration file
    ; Comments start with ';', as in php.ini
    
    [first_section]
    one = 1
    five = 5
    animal = BIRD
    
    [second_section]
    path = "/usr/local/bin"
    URL = "http://www.example.com/~username"
    
    [third_section]
    phpversion[] = "5.0"
    phpversion[] = "5.1"
    phpversion[] = "5.2"
    phpversion[] = "5.3"
    
    urls[svn] = "http://svn.php.net"
    urls[git] = "http://git.php.net"
    

    发件人:http://php.net/manual/en/function.parse-ini-file.php

    Symfony 支持 XML、PHP 和 YML,并允许您编写自己的配置解码器。

    【讨论】:

      猜你喜欢
      • 2017-07-18
      • 2012-01-20
      • 2015-10-24
      • 2018-04-28
      • 1970-01-01
      • 2013-06-17
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      相关资源
      最近更新 更多