PHP在原始类中实例化的类中的Access属性

时间:2010-03-19 17:27:07

标签: php design-patterns class oop

我不确定如何用正确的术语来解释这一点,所以也许一个例子是最好的方法......

$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

    }
}

我的问题是我不确定如何从EventProcess-&gt; DoSomething()方法中访问MasterClass的属性?我需要访问,执行操作和更新属性。 a,b,c属性将是非常大的数组,并且在执行脚本期间将多次调用DoSomething()方法。任何帮助或指示将不胜感激:)

1 个答案:

答案 0 :(得分:3)

这已经在SO上进行了多次讨论,每次都会导致没有“原生”方式。您必须将对MasterClass实例的引用传递给子类。在PHP5中:

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

并将其存储在子类中,如下所示:

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

    function __construct($masterClass) 
      {
        $this->masterClass = $masterClass;
      }