Using PHP's __call() to emulate a Class instead of Extending
A simple workaround, assuming that you want to keep the class a Singleton:

class Database {
    private static $instance;
    private $PDOInstance;

    public static function getInstance(){
        if(!self::$instance){
            try{
                self::$instance = new self();
            }catch(PDOException $e){
                return false;
            }
        }
        return self::$instance-&gt;getPDOInstance();
    }

    public function getPDOInstance() {
        return $this-&gt;PDOInstance;
    }
}


Well, more of a factory method now, which is silly. But not as silly as __call() / call_user_func_array. If you absolutely need to keep the class's signature as it is, go for it.

If not, a PDO wrapper would be the better approach.