|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2009
Messaggi: 700
|
[PHP] Metodi magici...aiuto...temo di non aver capito qualcosa
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");
?>
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 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
C'è un trattino di troppo:
Codice PHP:
Codice PHP:
EDIT: comunque è strano, invece di darti errore di sintassi... chissà che caspita fa
Ultima modifica di kk3z : 08-03-2010 alle 13:26. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:40.



















