Я создаю класс, который превращает плоский файл в виртуальную базу данных. Я пытаюсь использовать значения массива в качестве имен столбцов, а не индексов при получении данных, например ...
$db = new Database($config, array('first', 'second', 'third', 'fourth'), true);
Массив отправляется в конструктор в database.php:
public function __construct(Config $config, array $constants = null, $caseInsensitive = false) {
$this->_config = $config;
if(!is_null($constants))
$this->defineColumns($constants, $caseInsensitive);
return true;
}
, который передается в defineColumns()
:
private function defineColumns($constants, $caseInsensitive) {
for ($i=0;$i<count($constants);$i++)
define($constants[$i], $i, $caseInsensitive);
}
Это работает, и ятеперь можно использовать first
для доступа к столбцу 0, second
для доступа к столбцу 1 и т. д. ...
Однако функция define()
, кажется, делает константы глобальными и доступными извне экземпляра класса.
Я хочу, чтобы каждый набор объявленных констант находился в пределах одного экземпляра, что позволяет мне снова использовать эту же константу в другом экземпляре класса для доступа к другому столбцу.
Кто-нибудь знаетспособ сделать это?