I am presently working on an existing application that uses the __callStatic quite heavily combined with Dependency Injection that it is ridiculous. When you call a non existing static method, the application __callStatic method instantiates the class using constructor injection, then stores the created object in Depenancy obj array acting like a Singleton. Then calls the method you where accessing with the arguments.

class Object
{
function __constructor(TypeA $A, TypeB $C, ){
$this->a = $A;
$this->b = $C;
}

function method($c, $b)
{
return $a + $c + $this->a->sum() + $this->b->sum();
}
}

Object::method(c,b);

Just crazy stuff. But it works.