• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Obserwator w php - czy dobrze to rozumiem?

Object Storage Arubacloud
0 głosów
94 wizyt
pytanie zadane 27 czerwca 2019 w PHP przez niezalogowany

Dzień dobry,

Natknalem sie dzisiaj na wzorzec obserwator i postanowilem napisac mikro kod, który pomógłby mi zrozumieć ten mechanizm. Proszę i podpowiedź czy dobrze go rozumiem i probuje zastosować w tym przykładzie.

<?php
interface Observe{public function update($obj);}

class addToBase implements Observe{
    public $name = 'Obserwator1';
    public function update($obj){
        echo "\n \ndodaje tekst do bazy : ".$obj->text;
    }
}

class addToXml implements Observe{
    public $name = 'Obserwator2';
    public function update($obj){
        echo "\n \ndodaje tekst do pliku XML : ".$obj->text;
    }
}

class readText{
    public $observes;
    private $_data;
    
    public function __set($name, $value){
        $this->_data[$name] = $value;
    }
    
    public function __get($name){
        if(isset($this->_data[$name])){
            return $this->_data[$name];
        }
        return null;
    }
    
    public function addObs(Observe $obs){
        $this->observes[md5($obs->name)] = $obs; 
    }
    
    public function notify(){
        foreach($this->observes as $obs){
            $obs->update($this);
        }
    }
    
    public function read($txt){
        $this->text = $txt;
        echo "czytam tekst: ".$txt;
        $this->notify();
    }
}


$txt = new readText();
$txt->addObs(new addToBase());
$txt->addObs(new addToXML());
 
$txt->read('To ten tekst do przeczytania'); 

Krótki opis:

Klasa wyposażona w metode do pisania tekstu, dodatkowo może go dodać do xml lub bazy, jednakże zamiast pisać w niej metody, które mi na to pozwola uzyłem obserwatorów, ktorych będę mógł także uzyć w innym wypadku.

Zastanawia mnie też czy w dobry sposób przekazuje dane do zapisania ( w tym wypadku tekst ), uzyłem magicznego gettera oraz settera żeby nie musiec pisać geta oraz seta jako metodę do przekazywania takich danych.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+2 głosów
1 odpowiedź 360 wizyt
0 głosów
2 odpowiedzi 373 wizyt
pytanie zadane 27 listopada 2017 w JavaScript przez Al3x Użytkownik (870 p.)
0 głosów
1 odpowiedź 364 wizyt
pytanie zadane 4 lutego 2023 w C i C++ przez pasjonat_algorytmiki Pasjonat (19,540 p.)

92,584 zapytań

141,434 odpowiedzi

319,671 komentarzy

61,968 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...