suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Beobachtermuster in PHP implementieren

// Implementierungsfunktion: Sicherheitsmodul und Werbemodul beim Anmelden benachrichtigen

// Vordefinierte Schnittstelle: SplObserver-Beobachter und SplSubject-Beobachter

Klasse Benutzer implementiert SplSubject

{

protected $login_num;

protected $hobby ;

protected $_subject;

public function __construct($login_num, $hobby)

{

$this->login_num = $login_num;

$this->hobby = $hobby;

// Speichern Sie den Beobachter object

$this->_subject = new SplObjectStorage();

}

public function __get($name)

{

// TODO: __get()-Methode implementieren.

return $this -> $name;

}

public function login()

{

// Operation...

$this->notify();

}

// SplSubject interface

public function attachment( SplObserver $observer)

{

// TODO: Attach()-Methode implementieren.

$this->_subject->attach($observer);

}

public function detach(SplObserver $ Observer)

{

// TODO: Detach()-Methode implementieren.

$this->_subject->detach($observer);

}

public function notify()

{

/ / TODO: Implementieren Sie die Methode notify().

foreach ($this->_subject as $observer) {

$observer->update($this);

}

}

}

// Der Beobachter beobachtet Benutzeranmeldung hier

// Sicherheitsüberprüfung

Klassensicher implementiert SplObserver

{

public function update(SplSubject $subject)

{

// TODO: Update()-Methode implementieren.

if ($subject- >login_num > 10) {

echo 'Sie haben sich heute mehr als 10 Mal angemeldet. Möglicherweise liegt ein Passwortleck vor. ';

} else {

echo 'Heute' . ';

}

}

}

//Werbeförderung

Klassenanzeige implementiert SplObserver

{

public function update(SplSubject $subject)

{

// TODO: Update()-Methode implementieren .

if ($subject->hobby == 'sports') {

echo 'Dies ist eine Sportwerbung! ';

} else {

echo 'Zufällige Anzeige! ';

}

}

}

$hobby = ['sports', 'eat', 'drink', 'sleep', 'play'];

$user = new User(random_int(1, 20), $hobby[shuffle($hobby)]);

$user->attach(new safe());

$user->attach(new ad());

// Benutzeranmeldung Lösen Sie eine Reihe von Beobachtern aus, wenn

$user->login();


只是没有如果只是没有如果2175 Tage vor1071

Antworte allen(0)Ich werde antworten

Keine Antwort
  • StornierenAntwort