为什么我不能在PHP中重载构造函数?
2022-08-30 07:17:06
						我已经放弃了在PHP中重载我的构造函数的所有希望,所以我真正想知道的是为什么。
这到底是有原因的吗?它是否会产生固有的不良代码?是被广泛接受的语言设计不允许它,还是其他语言比PHP更好?
我已经放弃了在PHP中重载我的构造函数的所有希望,所以我真正想知道的是为什么。
这到底是有原因的吗?它是否会产生固有的不良代码?是被广泛接受的语言设计不允许它,还是其他语言比PHP更好?
你不能在PHP中重载任何方法。如果您希望能够在传递多个不同的参数组合时实例化 PHP 对象,请使用带有私有构造函数的工厂模式。
例如:
public MyClass {
    private function __construct() {
    ...
    }
    public static function makeNewWithParameterA($paramA) {
        $obj = new MyClass(); 
        // other initialization
        return $obj;
    }
    public static function makeNewWithParametersBandC($paramB, $paramC) {
        $obj = new MyClass(); 
        // other initialization
        return $obj;
    }
}
$myObject = MyClass::makeNewWithParameterA("foo");
$anotherObject = MyClass::makeNewWithParametersBandC("bar", 3);