¿Es posible utilizar el método mágico __call
al llamar funciones estáticamente?¿Usando __call con clases estáticas?
7
A
Respuesta
15
Aún no, hay un método propuesto (ahora disponible) __callStatic
Docs en el último oleoducto que conozco. De lo contrario, __call
y los otros __
métodos mágicos no están disponibles para el uso de otra cosa que la instancia de un objeto.
8
Tienes que usar otro método mágico, - esto solo está disponible en PHP> = 5.3, que aún no ha sido lanzado.
0
Como se describió anteriormente, no existe una llamada mágica estática. Pero puede codificar de esta manera:
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"));
Cuestiones relacionadas
- 1. Propiedades estáticas en clases estáticas
- 2. @autowired en clases estáticas
- 3. Activador y clases estáticas
- 4. C# MEF uso con clases estáticas
- 5. clases estáticas en C#
- 6. Extendiendo clases estáticas PHP
- 7. Clases estáticas en Python
- 8. Prueba de unidad Clases estáticas
- 9. ¿Usos para clases genéricas estáticas?
- 10. clases internas estáticas en Scala
- 11. clases singleton/estáticas para servicios
- 12. HttpContext.Current accedido en clases estáticas
- 13. Clases estáticas en Delphi (Win32)
- 14. ¿Debería evitar las clases estáticas?
- 15. ¿Cómo se usa is_callable con __call?
- 16. ¿Está bien terminar utilizando clases principalmente estáticas?
- 17. PHP __call vs method_exists
- 18. Cuándo usar clases estáticas vs instanciadas
- 19. Estableciendo propiedades con reflejo en las clases estáticas
- 20. ASP.NET Clases estáticas y sesiones asp.net
- 21. Java: clases anidadas no estáticas y instance.super()
- 22. Pautas para cuando usar clases estáticas sobre clases de instancias?
- 23. clases estáticas deben derivarse de objeto (C#)
- 24. ¿Puedo usar clases estáticas para mi registrador?
- 25. ¿Por qué Android prefiere las clases estáticas
- 26. ¿Dónde almacena CLR las clases estáticas?
- 27. Cargando DLL no inicializando clases C++ estáticas
- 28. ¿Por qué se usan clases estáticas?
- 29. PHP __call equivalente para java
- 30. Java: clases anidadas estáticas y reflexión: "$" frente a "."
Importar para notar que no está disponible todavía. – David
Ah bugger - Me preguntaba sobre esto, y comencé a escribir la pregunta ... entonces encontré __callStatic pero no me di cuenta de que no estaría disponible hasta php 5.3 – nickf
No he estado tan emocionado por un "menor" lanzamiento en PHP desde ... Sí PHP5.3 me da esperanza para el lenguaje. – David