Перегрузка — возможно ли использовать два конструктора в одном классе PHP?

Можно ли использовать два конструктора в одном классе PHP, как:

class php{

// first constructor
function __construct(){

}

// second constructor
function __construct(){

}

}

0

Решение

Когда мне нужно эмулировать перегрузку, я использую специальный аргумент, упорядочивающий обработку. Например, следующее ведет себя как функция с 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

Другие решения

У вас не может быть двух конструкторов, но вы можете использовать необязательные параметры для достижения одного и того же. Что-то вроде этого:

class Example {

function __construct($param = null) {
if ($param === null) {
// First case
} else {
// Second case
}
}

}
0

Невозможно определить несколько конструкторов в одном классе.
Как ниже определить

class Example {

function __construct(){

} // this is for the first construct

function __construct(){

} //this is for the second construct

}

Итак, как бы вы узнали, какой конструктор вызывается первым?

-3
По вопросам рекламы [email protected]