我正在编写一个框架,并且刚刚添加了命名空间。除了配置值之外,我在转换所有内容方面没有遇到任何问题。
我可以轻松定义常量,因此单个值不是问题......但是值数组怎么样?
以此数组为例,这是用于添加与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... */
这看起来并不干净,我假设有更好的方法可以做到这一点。其他框架如何处理这个问题,以及在保持与全局命名空间的分离时,我还有哪些替代配置方法?
答案 0 :(得分: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,并允许您编写自己的配置解码器。