background image

}
}
}

// 观察者抽象类

class

 Observer 

implements

 SplObserver{

//显示消息提示

public

 

function

 showMessage(SplSubject 

$obj

){

$user

 = 

$obj

->getName();

if

(

$user

==='admin'){

echo

 '您好, ',

$user

,'欢迎您进入管理后台<br/>';

}

else

{

echo

 "你好, '$user' 你已经被添加到了用户列表<br/>";

}
}

//这是继承父类的抽象方法

public

 

function

 update(SplSubject 

$subject

) {}

//显示个人年龄

public

 

function

 showAge(

$name

,

$age

){

echo

 "<script>alert('$name 的年龄是: $age')</script>";

}
}

$subject

 = 

new

 Observed(); 

//生成一个被观察者对象

$observer

 = 

new

 Observer(); 

//生成一个观察者对象

$subject

->attach(

$observer

);

//把观察者传入到被观察中去

$subject

->setName('张三'); 

//

 

调用 setName 方法

/*

 

通过面的 setName 

 

就会调用 $this->notify();

 

通过调用 $this->notify()

 

就会调用 $observer->showMessage($this)方法,

 

即每个观察者对象的 showMessage($obj)方法;

*/

$subject

->setName('admin');

$subject

->setAge(24);