我不确定如何用正确的术语来解释这一点,所以也许一个例子是最好的方法......
$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()方法。任何帮助或指示将不胜感激:)
答案 0 :(得分:3)
这已经在SO上进行了多次讨论,每次都会导致没有“原生”方式。您必须将对MasterClass
实例的引用传递给子类。在PHP5中:
$this->eventProccer = new EventProcess($this);
并将其存储在子类中,如下所示:
class EventProcess
{
private $masterClass; // Reference to master class
function __construct($masterClass)
{
$this->masterClass = $masterClass;
}