// 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 keselamatan pemantau 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 pengiklanan Iklan 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();