Özgün sınıf örneği bir sınıf içinde bir sınıf PHP Access özellik

1 Cevap php

Ben belki bir örnek en iyi yöntem bu yüzden doğru terimlerle açıklamak için nasıl emin değilim ...

$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

    }
}

Benim sorunum EventProcess-> DoSomething () yöntemi içinde Masterclass özelliklerine erişmek için nasıl emin değilim mi? Ben, erişmesi gereken işlemleri gerçekleştirmek ve özelliklerini güncelleştirmek. A, b, c özellikleri oldukça büyük diziler ve DoSomething () yöntemi, komut dosyası execuction sırasında birçok kez adı olacaktır olacaktır. Herhangi bir yardım veya işaretçiler çok duyacağız :)

1 Cevap

Bu, bu yapmanın hiçbir "doğal" bir yol olduğunu ve sonuç olarak SO üzerinde bir kaç kez, her zaman tartışılmıştır. Sen çocuk sınıfına MasterClass örneğine bir başvuru geçmek zorunda olacaktır. PHP5'ta:

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

ve böylece gibi çocuk sınıf içinde saklayın:

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

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