Предопределите массив в начале класса для всех используемых методов

У меня есть метод в классе, который возвращает один массив. Этот метод вызывается внутри других методов внутри того же класса. Вместо того, чтобы продолжать определять $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
}

0

Решение

Попробуйте поместить это назначение в конструктор класса:

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();
}

}

В соответствии с вашим родительским классом вам нужно передать необходимые аргументы

1

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

Ну, может я что-то упускаю, но обычно вы создаете такую ​​переменную в конструкторе:

public function __construct() {
$this->data = $this->getData();
}
2

class Myclass extends AnotherClass{

protected $array_var;

public __construct(){
$this->array_var = $this->getData();
}

public function your_method_here(){
echo $this->array_var;
}
}
0