Свойство PHP Access для класса из класса, созданного в исходном классе - PullRequest
0 голосов
/ 19 марта 2010

Я не уверен, как объяснить это с правильными терминами, так что, возможно, пример - лучший метод ...

$master = new MasterClass();

$master->doStuff();

class MasterClass {

    var $a;
    var $b;
    var $c;
    var $eventProccer;

    function MasterClass() 
    {
        $this->a = 1;
        $this->eventProccer = new EventProcess();
    }

    function printCurrent()
    {
        echo '<br>'.$this->a.'<br>';
    }

    function doStuff()
    {
        $this->printCurrent();
        $this->eventProccer->DoSomething();
        $this->printCurrent();
    }
}


class EventProcess {

    function EventProcess() {}

    function DoSomething() 
    {
        // trying to access and change the parent class' a,b,c properties

    }
}

Моя проблема в том, что я не уверен, как получить доступ к свойствам MasterClass из метода EventProcess-> DoSomething ()? Мне нужно было бы получить доступ, выполнить операции и обновить свойства. Свойства a, b, c будут довольно большими массивами, и метод DoSomething () будет вызываться много раз во время выполнения скрипта. Любая помощь или указатели будут высоко оценены:)

1 Ответ

3 голосов
/ 19 марта 2010

Это было обсуждено несколько раз на SO, каждый раз, в результате чего нет «родного» способа сделать это. Вам нужно будет передать ссылку на экземпляр MasterClass в дочерний класс. В PHP5:

 $this->eventProccer = new EventProcess($this);

и сохраните его в дочернем классе следующим образом:

 class EventProcess
  {
    private $masterClass; // Reference to master class

    function __construct($masterClass) 
      {
        $this->masterClass = $masterClass;
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...