了解PHP继承
问题描述:
我理解OOP中继承的基本原则,但我有一个特定的事情,我正在尝试去做,并希望获得有关如何做到最好的建议。了解PHP继承
可以说我有一个核心类:
class Core {
....
}
和我也有2个或更多的是扩展此功能
class MyClass1 extends Core {
....
}
class MyClass2 extends Core {
....
}
,我也具有其中我执行数据库类其它类我的查询,我想传递一个数据库类的实例化对象(可能通过引用)到我的每一个类。其中一个原因是存储执行页面的查询列表或计数。
我应该怎么做?
答
则可以将您的数据库对象的实例传递给一个构造你的类:
class Core
protected $db;
public function __construct(Your_Db_Class $database) {
$this->db = $database;
}
}
,然后,从你的方法,用$this->db
工作,访问数据库。
当然,instanciating你的类时,你必须指定数据库对象:
// somewhere, instanciate your DB class
$db = new Your_Db_Class();
// And, then, when instanciating your objects :
$obj = new MyClass1($db);
另一种方法是使用Singleton design pattern,所以有可能是只有一个实例你的数据库类。
可能更容易设置;但之后不太容易进行单元测试。
答
您可以将数据库对象作为参数传递给类的__construct函数,然后在该函数中将db对象分配给该类的成员,例如$ this-> database_handler。
另一种可能性是使用全局变量作为数据库对象,但全局变量由于多种原因而是恶意的,所以我们忽略它。
另一个说明:默认情况下,所有对象都是通过引用传递的,所以你不必担心这个。
你的问题有点含糊不清。你想要一个主实例(单例模式)还是一种追踪新实例(工厂模式)的方法? – Christian 2011-04-26 22:00:46
现在,PHP通过引用传递所有类的实例。 – SteAp 2011-04-26 22:03:13