为什么我不能在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);