Visualizzazione dei risultati da 1 a 7 su 7

Hybrid View

  1. #1
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,509
    Se lo script funziona, allora Netbeans ti sta segnalando degli errori, ma degli warning, che è diverso.

  2. #2
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Se lo script funziona, allora Netbeans ti sta segnalando degli errori, ma degli warning, che è diverso.
    Conosco i warning ma gli avvisi che leggo non lo sono. Prova ad incollare sul tuo NetBeans questo codice e capirai di che parlo:

    Codice PHP:
    /**
      la classe Observer implementa l’interfaccia SplObserver
      e introduce i due metodi che verranno invocati al momento
      della registrazione di una modifica di stato del subject
     */
    class Observer implements SplObserver {

        protected 
    $papero;

        public function 
    __construct($papero) {
            
    $this->papero $papero;
        }

    # il nome della classe viene concatenato al costruttore

        
    public function __toString() {
            return 
    "(" __CLASS__ ") " $this->papero;
        }

    # il metodo update() introduce i metodi richiamati
    # in seguito all’evento in cui è coinvolto il subject

        
    public function update(SplSubject $subject) {
            if (
    $subject->menoDiMille() == true) {
                echo 
    $this ": - Te li presto. <br />";
            }
            if (
    $subject->piuDiMille() == true) {
                echo 
    $this ": - Ma in due rate. <br />";
            }
        }

    }

    # il secondo observer viene definito all’interno di una
    # sottoclasse che estende la classe del primo observer

    class ObserverB extends Observer {

        public function 
    update(SplSubject $sub) {
            if (
    $sub->piuDiMille() == true) {
                echo 
    $this ": - Non ti do un centesimo. <br />";
            }
        }

    }

    /*
      la classe Subject implementa l’interfaccia SplSubject
     */

    class Subject implements SplSubject {

        private 
    $papero;
        private 
    $observers = array();
        private 
    $menodimille false;
        private 
    $piudimille false;

        public function 
    __construct($papero) {
            
    $this->papero $papero;
        }

        public function 
    __toString() {
            return 
    "(" __CLASS__ ") " $this->papero;
        }

    # il metodo attach() attribuisce gli observers al subject

        
    public function attach(SplObserver $obs) {
            
    $this->observers[] = $obs;
        }

    # il metodo detach() dissocia gli observers al subject

        
    public function detach(SplObserver $obs) {
            
    $this->observers array_diff($this->observers, array($obs));
        }

    # notify() segnala il verificarsi di un evento a carico del subject

        
    public function notify() {
            foreach (
    $this->observers as $observer) {
                
    $observer->update($this);
            }
        }

    # definizione dei valori di ritorno

        
    public function chiedePiuDiMille($val) {
            
    $this->piudimille $val;
            if (
    $val == true) {
                echo 
    $this ": - Mi servono 1.200 Dollari. <br />";
            }
            
    $this->notify();
        }

        public function 
    piuDiMille() {
            return 
    $this->piudimille;
        }

        public function 
    chiedeMenoDiMille($val) {
            
    $this->menodimille $val;
            if (
    $val == true) {
                echo 
    $this ": - Mi servono 500 Dollari. <br />";
            }
            
    $this->notify();
        }

        public function 
    menoDiMille() {
            return 
    $this->menodimille;
        }

    }

    /*
      Istanza delle classi e generazione degli oggetti
      associati a subject ed observers
     */
    $observer = new Observer("Paperoga");
    $observerB = new ObserverB("Paperone");
    $subject = new Subject("Paperino");
    # invocazione dei metodi
    $subject->attach($observer);
    $subject->attach($observerB);
    $subject->chiedeMenoDiMille(false);
    $subject->chiedeMenoDiMille(true);
    $subject->chiedePiuDiMille(true);
    $subject->detach($observerB);
    $subject->chiedePiuDiMille(true); 
    Più pratica in futuro...

  3. #3
    A parte il fatto che questa interfaccia SplObserver è inutile infatti posso tranquillamente riscrivere lo script decidendo di non usarla però la curiosità di perché NetBeans consideri il codice errato anche implementando tutti i metodi di questa stessa interfaccia c'è.

    Mettere un namespace al file e "risolvere" é davvero strano, questo proprio non me lo spiego.
    Più pratica in futuro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.