Я пишу фреймворк и просто добавил пространства имен. У меня не было проблем с преобразованием всего, за исключением значений конфигурации.Определение значений конфигурации в определенных пространствах имен?
Я могу легко определить константы, поэтому одиночные значения не являются проблемой ... но как насчет массива значений?
Возьмите этот массив, например, который является массивом настроек, чтобы добавить подключение к капсуле ...
[
'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
класса. Это предотвратит выполнение глобальной переменной. Хотя маловероятно, что будет использоваться $BareBonesCapsule
, я все равно хочу, чтобы моя инфраструктура была чистой и сохранила все в пространстве имен.
я мог бы объявить кучу констант в файле конфигурации ...
<?php
namesapce BareBones;
define("driver", "mysql");
define("host", "localhost");
define("database", "DB_NAME");
/* etc... */
Это не кажется очень чистым, и я предполагаю, что есть лучший способ сделать это. Как другие среды справляются с этой проблемой и какие альтернативные способы настройки я поддерживаю при сохранении разделения от глобального пространства имен?