PHP está lidando incorretamente com minha chamada estática
Estou com um problema no PHP 5.3. Eu preciso chamar um método usando__callStatic
, mas se eu usá-lo em um objeto instanciado, o PHP chama__call
em vez de
Acima de um exemplo da 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();
?>
Impressões: Ops! Não funciona. Operações reais!
Note que eu chamouseCallStatic
a partir de umnew B()
. Se eu ligar diretamente, funciona bem comoB::foo()
.
O que posso fazer para que funcione bem?