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;
}