我已经放弃了能够在 PHP 中重载我的构造函数的所有希望,所以我真正想知道的是为什么。
这有什么原因吗?它会创建本质上糟糕的代码吗?是被广泛接受的语言设计不允许它,还是其他语言比 PHP 更好?
最佳答案
您不能在 PHP 中重载任何方法。如果您希望能够在传递几种不同的参数组合时实例化 PHP 对象,请使用带有私有(private)构造函数的工厂模式。
例如:
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);
关于php - 为什么我不能在 PHP 中重载构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2169448/