Ist es möglich, die magische Methode __call
zu verwenden, wenn Funktionen statisch aufgerufen werden?Verwenden von __call mit statischen Klassen?
7
A
Antwort
15
Noch nicht, es gibt eine vorgeschlagene (jetzt verfügbar) __callStatic
Docs Methode in der Pipeline zuletzt wusste ich. Ansonsten sind __call
und die anderen __
magischen Methoden für nichts anderes als die Instanz eines Objekts verfügbar.
8
Sie müssen die andere magische Methode verwenden, __callStatic
- dies ist nur in PHP> = 5.3, die noch nicht freigegeben worden ist.
0
Wie zuvor beschrieben, gibt es keinen magischen statischen Aufrufer. Aber Sie können wie folgt codieren:
class First {
public static function test1(){
return 1;
}
public static function test2(){
return 2;
}
}
class Second {
public static function test1(){
if(func_num_args()>0){
return func_get_args();
}
return 21;
}
public static function test2(){
return 22;
}
}
class StaticFactory {
public static function factory($class, $method){
if(func_num_args()>2){
$args = func_get_args();
array_shift($args);
array_shift($args);
return call_user_func_array(array($class,$method), $args);
}else{
return call_user_func_array(array($class,$method), array());
}
}
}
print_r(StaticFactory::factory("Second", "test1", 1, false, true));
print_r(StaticFactory::factory("First", "test1"));
Verwandte Themen
- 1. Verwenden Reflexion eine Liste von statischen Klassen
- 2. Hilfe mit __call mit coderigniter
- 3. Modul mit Klassen mit nur statischen Methoden
- 4. Klassen mit nur öffentlichen statischen Methoden vs instanziierten Klassen
- 5. Festlegen von Eigenschaften mit Reflektion auf statischen Klassen
- 6. C# Verwenden von Blockverwendung mit statischen Objekten
- 7. Statische Eigenschaften in statischen Klassen
- 8. Was ist der Unterschied zwischen statischen Klassen und nicht statischen Klassen innerhalb von Interfaces?
- 9. PHP __call vs method_exists
- 10. Verwenden von privaten statischen Methoden
- 11. Verwenden von partiellen Klassen
- 12. Python-Äquivalent von PHPs __call() magische Methode?
- 13. Verwenden von ActiveRecord-Klassen mit Legacy-Tabellen
- 14. Verwenden von WCF mit abstrakten Klassen
- 15. Verwenden von Klassen mit dem Arduino
- 16. Erweiterungsmethoden in verschachtelten statischen Klassen nicht erlaubt?
- 17. Verwenden von statischen Block zum Zuweisen von Ressourcen in Java
- 18. generische Klassen mit gemeinsamen statischen Felder in C#
- 19. Verwenden von URLrewrite in statischen Unterverzeichnissen
- 20. Wie lange leben Klassen mit statischen Methoden in Android?
- 21. Junit SuiteClasses mit einer statischen Liste der Klassen
- 22. Testen von statischen Klassen und Methoden in C# .NET
- 23. Warum verwenden Sie Zugriffs-Spezifizierer beim Definieren von inneren (nicht-statischen geschachtelten) Klassen in Java?
- 24. Verwenden von Structs innerhalb von Klassen aus anderen Klassen
- 25. Verwenden von statischen Mutex in einer Klasse
- 26. Java Help: Verwenden von Klassen
- 27. Verwenden von abstrakten Klassen und statischen Membern zur besseren Verwaltung der Funktionalität
- 28. Verwenden von statischen Variablen im Razor
- 29. Wagen in Android Verwenden von statischen Klasse
- 30. php: Aufruf von statischen Klassen durch eine Variable
Import zu beachten, dass noch nicht verfügbar ist. – David
Ah bugger - Ich habe mich gefragt, und fing an, die Frage zu schreiben ... dann fand ich __callStatic, aber ich wusste nicht, dass es nicht verfügbar sein wird bis php 5.3 – nickf
Ich war nicht so aufgeregt für eine "kleine" Veröffentlichung in PHP seit ... Yeah PHP5.3 gibt mir Hoffnung für die Sprache. – David