在PHP中,是否可以在不调用类的构造函数的情况下创建类的实例?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (231)

无论如何,是否可以在不调用构造函数的情况下创建php类的实例?

提问于
用户回答回答于

第一种方法是为构造函数中的参数提供默认值,并且只有在设置了这些参数时才对它们执行某些操作。

class MyClass {
    public __construct($file = null) {
        if ($file) {
            // perform whatever actions need to be done when $file IS set
        } else {
            // perform whatever actions need to be done when $file IS NOT set
        }
        // perform whatever actions need to be done regardless of $file being set
    }
}

另一个选项是扩展类,使子类的构造函数不调用父类的构造函数。

class MyParentClass {
    public __construct($file) {
        // perform whatever actions need to be done regardless of $file being set
    }
}

class MyChildClass extends MyParentClass {
    public __construct() {
        // perform whatever actions need to be done when $file IS NOT set
    }
}
用户回答回答于
$reflection = new ReflectionClass("ClassName");
$instance = $reflection->newInstanceWithoutConstructor(); //That's it!

扫码关注云+社区

领取腾讯云代金券