Можно ли использовать два конструктора в одном классе PHP, как:
class php{
// first constructor
function __construct(){
}
// second constructor
function __construct(){
}
}
Когда мне нужно эмулировать перегрузку, я использую специальный аргумент, упорядочивающий обработку. Например, следующее ведет себя как функция с 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);
У вас не может быть двух конструкторов, но вы можете использовать необязательные параметры для достижения одного и того же. Что-то вроде этого:
class Example {
function __construct($param = null) {
if ($param === null) {
// First case
} else {
// Second case
}
}
}
Невозможно определить несколько конструкторов в одном классе.
Как ниже определить
class Example {
function __construct(){
} // this is for the first construct
function __construct(){
} //this is for the second construct
}
Итак, как бы вы узнали, какой конструктор вызывается первым?