是否可以在PHP中重载构造函数

Aar*_*ron 2 php methods

例如在C#中你可以使用相同的方法名重载方法但是PHP呢?

 class Database {
    private $dsn;
    private $host;
    private $user;
    private $password;
    private $enckey;

    function __construct($dbname, $host, $user, $password) {
        $this->dsn = "mysql:dbname=" . $dbname . ';host=' . $host;
        $this->user = $user;
        $this->password = $password;
}
    function __construct($dbname, $host, $user, $password, $enckey) {
        $this->dsn = "mysql:dbname=" . $dbname . ';host=' . $host;
        $this->user = $user;
        $this->password = $password;
        $this->enckey = $enckey;
    }
}
Run Code Online (Sandbox Code Playgroud)

Ali*_*guy 7

重点是什么?

class Database {
    private $dsn;
    private $host;
    private $user;
    private $password;
    private $enckey;

    function __construct($dbname, $host, $user, $password, $enckey = null) {
        $this->dsn = "mysql:dbname=" . $dbname . ';host=' . $host;
        $this->user = $user;
        $this->password = $password;
        $this->enckey = $enckey;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 它成为可选参数,默认值为"null" (2认同)