是否可以在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;
}
}