PHP está manejando incorrectamente mi llamada estática
Tengo un problema en PHP 5.3. Necesito llamar a un método usando__callStatic
, pero si lo uso en un objeto instancied, PHP llame a__call
en su lugar.
Por encima de un ejemplo de la vida real:
<?php
class A {
function __call($method, $args){
// Note: $this is defined!
echo "Ops! Don't works. {$this->c}";
}
static function __callStatic($method, $args){
echo 'Fine!';
}
}
class B extends A {
public $c = 'Real Ops!';
function useCallStatic(){
static::foo();
// === A::foo();
// === B::foo();
}
}
$foo = new B();
$foo->useCallStatic();
// This works:
// B::foo();
?>
Huellas dactilare: ¡Ops! No funciona Real Ops!
Nota que llamouseCallStatic
a partir de unanew B()
. Si llamo directamente funciona bien comoB::foo()
.
¿Qué puedo hacer para que funcione bien?