我有一个父类(super class),它实例化我的 Sql 类,因此所有派生类在构造后都能够执行查询,而无需实例化它们自己的 Sql 实例。 这很好用,但我有一个令我困惑的问题。其中一个派生类在其构造函数中实例化另一个派生类,因此现在,我相信我有 2 个打开的 Sql 类实例,因为每个实例都实例化父类。我无法重写任何派生类中的父类,因为它们都需要访问数据库实例来执行自己的查询。有没有办法防止派生类在另一个派生类实例化它时调用父构造函数?
我正在考虑将参数传递给类,并且仅在满足要求时才调用父构造函数。
function__construct($param) {
if($param == false) {
parent::__construct();
}
}
您认为这种方法有意义,还是您预见到将来会出现任何错误?
最佳答案
我认为您想要做的是使用单例模式。为此,您应该将构造函数声明为私有(private)方法:
private function __construct() {
}
并通过调用静态方法对其进行一次初始化,例如:
static function connect_to_mysql() {
//procedure of connecting...
}
myClass::connect_to_mysql();
关于php - 防止对象出现多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8691228/