Я создаю класс для удобного получения переменных из других php-файлов.
Проблема в том, что я использую двойной знак доллара, чтобы создать хеш-карту в стиле $ variable_name => $$ varible_real_valueи я хочу, чтобы все атрибуты итератора были переменными класса.Определение новой переменной в области видимости __constructor может перезаписывать переменные из файлов.Проблемным фрагментом кода является
foreach($this->args AS $this->iterator) {
$this->data->$this->iterator = $$this->iterator;
}
Но когда я заменю его на
foreach($this->args AS $var) {
$this->data->$var = $$var;
}
Переменная '$ var' будет перезаписана.
class DataFile {
private
$data = null,
$iterator = null,
$args = null
;
public function __construct($file) {
require($file);
unset($file);
$this->args = func_get_args();
array_shift($this->args);
$this->data = new ArrayObject();
foreach($this->args AS $this->iterator) {
$this->data->$this->iterator = $$this->iterator;
}
}
public function __get($key) {
return $this->data->$key;
}
}
Пример использования:
$conf = new DataFile('mysql.php', 'var');
$databaseName = $conf->var->database;
Есть ли обходной путь для этого,
Спасибо