Ciao,
stavo leggendo la guida di HTML.it relativa a PHP OO...e sono arrivato a leggere questo capitolo: http://php.html.it/guide/lezione/424...i-prima-parte/

Praticamente da quello che ho capito i metodi magici sono dei metodi che vengono invocati automaticamente dal sistema quando accade una particolare situazione nella classe o negli oggetti della classe...ok...fin quì ci stò credo...

Nell'esempio che mi crea problemi si fà riferimento ai seguneti metodi magici:

1) __call: viene richiamato automaticamente quando viene richiciamato un metodo inaccessibile nel contesto di un oggetto.

2) __callStatic: viene richiamato automaticamente quando viene richiciamato un metodo inaccessibile nel contesto della classe (un metodo di classe ad esempio)

Questo è il codice che mi crea problemi:

codice:
<?php

class MyClass{

    /* Metodo magico che quando viene invocato un metodo inaccessibile nel
     * contesto dell'oggetto mostra il nome del metodo inaccessibile invocato e
     * la lista dei suoi argomenti */
    public function __call($name, $args){
        echo "È stato richiamato il metodo " . $name . " con i seguenti argomenti: ";
        foreach($args as $arg) echo $arg . " ";
    }

    /* Metodo magico che quando viene invocato un metodo inaccessibile nel
     * contesto statico  mostra il nome del metodo inaccessibile invocato e
     * la lista dei suoi argomenti */
    public function __callStatic($name, $args) {
        echo "È stato richiamato il metodo " . $name . " in un contesto statico con i seguenti argomenti: ";
	foreach($args as $arg) echo $arg . " ";
    }

}

$obj1 = new MyClass();  // Creo un nuovo oggetto istanza di MyClass

// Provo ad invocare su tale oggetto un metodo inaccessibile (non è definito nella classe)
$obj1-->setName("George");

// Provo ad invocare su tale classe un metodo statico inaccessibile (non è definito nella classe)
MyClass::setName("Luca");

?>
Praticamente quando lo vado ad eseguire mi dà il seguente errore:
Fatal error: Call to undefined function setName() in /var/www/PHPesempi/metodiMagici1.php on line 26

Da quello che ho capito usando i metodi magici __call e __callStatic dovrebbe succedere che: tento di accedere a dei metodi inaccessibili (perchè non sono stati dichiarati nella classe) ed invece di darmi quell'errore dovrebbe stamparmi:

È stato richiamato il metodo setName con i seguenti argomenti: George"
È stato richiamato il metodo setName in un contesto con i seguenti argomenti: Luca"

Cos'è che mi sfugge?

Grazie
Andrea