php - 防止对象出现多个实例

标签 php object constructor

我有一个父类(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/

相关文章:

PHP - LDAP 身份验证和搜索

php - Laravel Mock Facade shouldReceive 未按预期工作

用于创建类实例的 C# 快捷符号

构造函数的 Java 枚举合成参数

php - API 按城市和酒店搜索,查找我的数据库中存在的城市和酒店

javascript - 如何将并行列表的对象转换为对象列表?

Javascript 对象,返回包含嵌套数组中值的更新对象

arrays - Swift 2.0 过滤自定义对象数组 - 无法使用列表类型的参数调用 'filter'

c++ - 为什么 X(X&) 可以调用两次?

php - 返回最后 2 位数字