是否可以在单个php类中使用两个构造函数,如:
class php{
// first constructor
function __construct(){
}
// second constructor
function __construct(){
}
}
答案 0 :(得分:1)
当我需要模拟重载时,我会使用特殊参数来命令处理。例如,以下行为类似于具有4种变体的函数:
function read(&$bytes = null, $off = 0, $len = 0)
{
// Simply checking for null is not useful for references,
// A value created as a parameter will be null, but the number
// of arguments will still exist, check the argument count instead
// of the default values.
if (0 === func_num_args()) {
// Equals: read();
}
$off = (int) $off;
$end = min($off + $len, $this->length) ? $this->length;
// Equals: read($b, $i, $l);
}
以上模仿:
function read();
function read(&$bytes);
function read(&$bytes, $off);
function read(&$bytes, $off, $len);
答案 1 :(得分:0)
您不能拥有两个构造函数,但您可以使用可选参数来实现相同的功能。像这样:
class Example {
function __construct($param = null) {
if ($param === null) {
// First case
} else {
// Second case
}
}
}
答案 2 :(得分:-3)
在一个类中定义多个构造函数是不可能的.. 如下定义
class Example {
function __construct(){
} // this is for the first construct
function __construct(){
} //this is for the second construct
}
那么,您如何知道首先调用哪个构造函数?