Когда $ this может ссылаться на переменные вне своего класса в PHP? - PullRequest
0 голосов
/ 26 февраля 2020
class A {
  public function f(){
    $this->ar[0] = 'something';
  }
}

Например, как можно вызвать функцию f, чтобы $ this-> ar ссылался на массив, объявленный вне класса A? Предположим, что A не наследует ar.

Редактировать:

Я попытался упростить вопрос. Фактический код, на который я смотрю, - это функция index в классе opencart ControllerStartupStartup Индекс функции использует $ this для доступа к экземплярам класса, которые не определены в этом классе: $this->db, $this->config и $this->tax.

Они не объявлены в родительском классе Контроллер .

Функция вызывается с call_user_func_array(array($controller, $this->method), $args); в Действие класс.

1 Ответ

0 голосов
/ 26 февраля 2020

Может быть, вы можете сделать «ar» известным и предоставить его в классе как установщик, так что экземпляр ar известен и вы можете обратиться к нему с помощью $ this

class A {
  $ar = array();

   public function f(){
     $this->ar[0] = 'something';        
   }
 }
 // INSTANCE with Setter
 $ar[0]='whatever';
 $class = new A();
 $class->ar = &$ar;
 $class->f();
 echo $ar[0];
...