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

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

问题描述:

e.g in C# you can overload methods using the same method name but what about 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;
    }
}

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

  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; 
} 
} 
  code  >  pre> 
  div>

What's the point?

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;
    }
}