Fonksiyon parametresi olarak nesneler / referanslar Passing

1 Cevap php

EDIT: Language is PHP. So, I'm implementing a listener/observer pattern. One of the objects I implemented was an object for including files. Which works in a way like this:

class IncludeEvent extends Event {
   protected $File = '';
   public $Contents;
        ....
   public function Begin() {
        ....
        // this is the ONLY time $Contents is modified:
        $this->Contents = ob_get_contents();
        ob_end_clean();
        ....
   }
        ....
   if ($this->Notify(new IncludeObject($this->File,'OBOutput', $this)) !== false) {
        print $this->Contents;
   }
}

Now, whenever an object wants to signal its listeners that an event happened, they need to use the Notify function. So at one point I had to send a reference to the object to its listeners, so they could have access to the included content ($Contents). So I used Notify() passing $this as the parameter. When I try to access the $Content from the other object, it simply returns as an empty string.

Not: Nesne fonksiyonlar as it should Normal bir bağlamda, ben bir işlev parametre olarak geçirmek sadece ben onun $ İçeriği erişemiyor.

Için yapıcı IncludeObject():

public function __construct($F= '', $M= -1, &$IV = null) {
    $this->File = $F;
    $this->Func = $M;
    $this->IncEv = $IV;
}

Dinleyici böyle IncludeEvent nesneye erişir:

public function OBOutput($IncObj){
    print $IncObj->IncEv->Contents;
    return false;
}

Yani evet, nasıl nesne başvurularını uzun dizeleri erişebilirim? Bu kısa dizeleri ile çalışıyor, ama uzun dahil dosyası gibi bir şey sadece boş döner.

: () Haberdar olarak tanımlanır

final public function Notify($EvObj = null) {
        foreach ($this->listen_list as $z) {
            $d = call_user_func(array($z, $EvObj->Func), $EvObj);
            if ($d == true || is_null($d)) {
                return true;
            }
        }
        return false;
    }

1 Cevap

nasıl nesne referanslarından uzun dizeler erişebilirim? Bu kısa dizeleri ile çalışıyor, ama uzun dahil dosyası gibi bir şey sadece boş döner.

Eğer yanlış tosladın. söyliyim, bunu gerek & yok tüm. nesneler olmadan başvuruya göre iletilir (PHP 4'te, ancak günümüzde kullanarak olmamalıdır).