Я работаю над объектом MPTT, который будет поддерживать несколько методов базы данных. Прежде всего, MySQL и MySQLi. Теперь я создал это так
Mptt - основной объект, который будет загружать правильный подобъект
class Mptt {
/**
* Array of available driver types
* @var array
*/
private $availableDrivers = array('mysqli','mysql');
/**
* Holding an instance of the mptt object corresponding to the selected driver
* @var object
*/
public $instance;
public function __construct($driver = 'mysqli', $autoConnect = false, $info = array()) {
if (in_array($driver, $this->availableDrivers)) {
switch ($driver) {
case 'mysqli':
$this->instance =& new Mptt_MySQLi();
break;
case 'mysql':
$this->instance =& new Mptt_MySQL();
break;
}
return $this->instance;
}
}
}
сейчас, единственный способ добиться успеха в этой работе - это сделать что-то вроде
добавить открытые переменные для каждого драйвера и сделать это следующим образом
$mptt = new Mptt('mysqli');
$mptt->mysqli->addBranch(.....);
но я не хочу этого mysqli-> part
.. Поэтому я подумал, что если я, возможно, попытаюсь передать $this->instance
в качестве ссылки, то $mptt
будет вместо Mptt_MySQLi
вместо ..
Надеюсь, кто-то знает ответ на этот вопрос
Заранее спасибо
- Оле