// Fungsi pelaksanaan: Maklumkan modul keselamatan dan modul pengiklanan apabila log masuk
// Antara muka yang dipratakrif: Pemerhati SplObserver dan pemerhati SplSubject
kelas Pengguna melaksanakan SplSubject
{
protected $login_
$login_🜎;🜎
dilindungi $_subject;fungsi awam __construct($login_num, $hobby){$this->login_num = $login_num;$this->hobi = $hobi;/
objek $this->_subject = new SplObjectStorage();}fungsi awam __get($name){// TODO: Laksanakan kaedah __get() .t $this -balik $name;
}
log masuk fungsi awam()
{
// Operasi...
$this->notify();
}
// SplSubject function interface
SplObserver $observer)
{
// TODO: Laksanakan kaedah attach().
$this->_subject->attach($observer);
}
public observer detach(Spl)
{
// TODO: Laksanakan kaedah detach() Laksanakan kaedah notify().
foreach ($this->_subject as $observer) {
$observer->update($this);
}
}
}
// log masuk pengguna di sini// Pemeriksaan keselamatanpemantau kelas melaksanakan SplObserver{kemas kini fungsi awam(SplSubject $subject){// TODO: Laksanakan kemas kini() kaedah. >login_num > 10) {echo 'Anda telah log masuk lebih daripada 10 kali hari ini. ';} lain {gema 'Hari ini' . ';}}}//Promosi pengiklananIklan kelas melaksanakan SplObserver{kemas kini fungsi awam(SplSubject $subject)(kaedah SplSubject $subject)🜎
🜎 .jika ($subjek->hobi == 'sukan') {echo 'Ini adalah iklan sukan! ';} lain {gema 'Iklan rawak! ';}}}$hobi = ['bersukan', 'makan', 'minum', 'tidur', 'bermain'];$pengguna = Pengguna baharu(random_int(1, 20), $hobby[shuffle($hobby)]);$user->attach(new safe());$user->attach(new ad());// User login Cetuskan satu siri pemerhati apabila $user->login();