Я пытаюсь предоставить переменную-член как значение по умолчанию для метода класса.
Я знаю, что невозможно использовать переменную в качестве значения по умолчанию для функции non-class, но похоже, что в этом классе должен быть способ сделать это.
Должен быть способ сделать это – возможно, у меня есть неправильный синтаксис:
class test{ private $test = ''; __construct(){ $this->test = "whatever"; } function getTest($var = $this->test){ echo $var; } }
но это вызывает ошибку:
$ this-> test как значение параметра аргумента функции не разрешено. неожиданный T_VARIABLE.
Есть предположения?
Из руководства : –
Значение по умолчанию должно быть константным выражением, а не (например) переменной, членом класса или вызовом функции.
Я бы просто сделал что-то вроде:
<?php class Test { public function __construct() { $this->test = "whatever"; } public function getTest($var=NULL) { if (is_null($var)) { $var = $this->test; } echo $var; } } ?>
Я считаю, что вы можете использовать только константы (строки, числа и т. Д.) В этом синтаксисе (но я мог ошибаться в этом).
Я предлагаю эту альтернативу:
function getTest($var = null) { if (is_null($var)) { $var = $this->test; } }