php - 为什么我不能在 PHP 中重载构造函数?

标签 php oop overloading constructor

我已经放弃了能够在 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/

相关文章:

php - 调用未定义的方法 CI_DB_mysql_driver::num_rows()

javascript - "this"不返回选择器

java - 从 RadioButton 计算分数

c++ - 无法重载 [] 运算符

c++ - 用整型变量重载类名

php - 如何在 PHP 中迭代 JSON 输出并仅选择第二个键 => 值?

php - 在多维数组中搜索字符串并获取 key

php - MySQL 数据库 : How far to Normalize/Queries VS Join/Unique Index

c - C中的面向对象编程

c# - 使用默认参数重载构造函数