[英]Return a reference of an object instance
我正在研究支持多种数据库方法的 MPTT object。 首先是 MySQL 和 MySQLi。 现在我已经这样创建了
Mptt - 将加载正确子 object 的主 object
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
..
希望有人知道这个问题的答案..
在此先感谢-Ole
首先,在new
之前不需要&
,如在 PHP 中,默认情况下通过引用传递 5 个对象。 您所做的是正确的,但是您不能在构造函数中执行此操作,您必须定义getInstance()
方法,该方法将构造您的 object 并返回对$this->instance
的引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.