Question: I'm havinh a problem on PHP 5.3. I need to call a method by using `__callStatic`, but if I use it in a instancied object, PHP call `__call` instead.

Above a real life example:

```
<?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();

?>

```

**Prints**: Ops! Don't works. Real Ops!

Note that I call `useCallStatic` from a `new B()`. If I call directly works fine like `B::foo()`.

What I can do to it works fine?

Answer: 
This is probably due to the standard notation of calling parent methods, regardless of state. You could check if the `$this` keyword is set in the `__call` method and if not, make a call to `__callStatic` ?

EDIT: This isn't a bug per se, the static call is being made from an object context. Take a look at [this bug thread on php](http://bugs.php.net/51176).
Inheritance of static methods is a bit weird in PHP. I suspect you need to redefine `__callStatic` in `B`