Alcuni mesi fa, ho letto su una funzione PHP che viene chiamata ogni volta che viene chiamato un metodo statico, simile alla funzione __construct
che viene chiamata quando un'istanza di classe viene creata un'istanza. Tuttavia, non riesco a trovare quale funzione si prenda cura di questa funzionalità in PHP. Esiste una tale funzione?Alternatore costruttore per metodi statici in PHP
risposta
Si può giocare con __callStatic() e fare qualcosa del genere:
class testObj {
public function __construct() {
}
public static function __callStatic($name, $arguments) {
$name = substr($name, 1);
if(method_exists("testObj", $name)) {
echo "Calling static method '$name'<br/>";
/**
* You can write here any code you want to be run
* before a static method is called
*/
call_user_func_array(array("testObj", $name), $arguments);
}
}
static public function test($n) {
echo "n * n = " . ($n * $n);
}
}
/**
* This will go through the static 'constructor' and then call the method
*/
testObj::_test(20);
/**
* This will go directly to the method
*/
testObj::test(20);
Utilizzando questo codice qualsiasi metodo che è preceduta da '_' verrà eseguito il 'costruttore' statica prima. Questo è solo un esempio di base, ma è possibile utilizzare __callStatic
tuttavia funziona meglio per voi.
Buona fortuna!
Potrebbe __callStatic() essere il metodo a cui ti riferisci? Ho appena trovato questo nel manuale PHP:
http://www.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.methods
Forse no, però, dal momento che sembra essere un metodo magico per gestire metodo statico definito chiama ...
Ho paura che questo non sia il metodo che sto cercando. Grazie per la tua risposta. –
Il __callStatic() viene chiamato ogni volta che chiami il metodo statico non esistente di una classe.
Un po 'di tempo fa mi sono imbattuto in questo metodo nel manuale PHP, ma, come dici tu, viene chiamato solo quando viene chiamato un metodo statico inesistente. –
- 1. Metodi statici in PHP
- 2. PHP ottenere metodi statici
- 3. Metodi in linea statici?
- 4. Inizializzatori statici e metodi statici in Java
- 5. doAnswer per metodi statici - PowerMock
- 6. Uso corretto di "getInstance" e metodi statici in PHP?
- 7. in PHP, quando dovrei usare metodi statici o classi astratte?
- 8. metodi astratti statici in C++
- 9. metodi finali statici in enum
- 10. metodi di estensione statici
- 11. Java - Metodi statici generici
- 12. Metodi statici nell'interfaccia java
- 13. F # Metodi statici privati
- 14. Metodi statici Python, perché?
- 15. statici e non statici Chiamata in PHP
- 16. Perché i caratteri PHP non hanno metodi astratti statici?
- 17. Manomanti metodi 'statici' rispetto ai metodi 'istanza'
- 18. Metodi pubblici statici vs metodi pubblici
- 19. Proprietà e metodi di ereditarietà e metodi statici
- 20. metodi statici di refactoring in metodi di istanza in Eclipse
- 21. Metodi statici su classi generiche?
- 22. Metodi statici di classe Python
- 23. Metodi di fabbrica statici in java efficace
- 24. Metodi statici nei moduli rubino?
- 25. Funzioni rispetto ai metodi statici
- 26. Come accedere ai metodi statici in TypeScript
- 27. Metodi statici e di istanza in Python
- 28. albero binario metodi statici in Java
- 29. definire sacco di metodi statici in C++
- 30. filettatura e statici metodi in C#
Non è quello che speravo, ma penso che sia il più vicino a quello che sto cercando. Grazie, Adi. –
Nessun problema, spero di averlo aiutato. –