У меня есть метод в классе, который возвращает один массив. Этот метод вызывается внутри других методов внутри того же класса. Вместо того, чтобы продолжать определять $data
в начале каждого метода, есть ли способ определить его в начале расширенного класса? Вот пример того, чего я пытаюсь добиться [упрощенно]
class Myclass extends AnotherClass
{
protected $data = $this->getData(); // this does not wwork
public function aMethod()
{
$data = $this->getData();
$data['userName'];
// code here that uses $data array()
}
public function aMethod1()
{
$data = $this->getData();
// code here that uses $data array()
}
public function aMethod2()
{
$data = $this->getData();
// code here that uses $data array()
}
public function aMethod2()
{
$data = $_POST;
// code here that processes the $data
}
// more methods
}
Попробуйте поместить это назначение в конструктор класса:
class MyClass extends AnotherClass {
protected $variable;
function __construct()
{
parent::__construct();
$this->variable = $this->getData();
}
}
** ОБНОВИТЬ **
Вы также можете попробовать следующее
class MyClass extends AnotherClass {
protected $variable;
function __construct($arg1)
{
parent::__construct($arg1);
$this->variable = parent::getData();
}
}
В соответствии с вашим родительским классом вам нужно передать необходимые аргументы
Ну, может я что-то упускаю, но обычно вы создаете такую переменную в конструкторе:
public function __construct() {
$this->data = $this->getData();
}
class Myclass extends AnotherClass{
protected $array_var;
public __construct(){
$this->array_var = $this->getData();
}
public function your_method_here(){
echo $this->array_var;
}
}