在回调中使用$ this指的是回调类

So, I have something like this:

class ClassA{

    public function doCallback($callback){
        call_user_func_array($callback, array());
    }

    public function doSomething(){
        return 12345;
    }

}


class ClassB{

    public function runMe(){
        $classA = new ClassA();

        $classA->doCallback(function(){
            $this->doSomething();
        });

    }

}

I am trying to figure out how, if possible I can use $this or something similar in a callback function that will refer to the class that the callback is running on (Not the class it is in) if that makes sense.

So in my above example I would like $this->doSomething(); where $this means ClassA and not ClassB. Currently $this is referring to ClassB. Is there something that I can use to say I want ClassA?

EDIT

Here is the actual method that I am using

public function save(){
    $id    = (int)$this->input->post("id");
    $title = $this->input->post("title");
    $uid   = (int)$this->session->get("id");

    $this->db->getTable("content")
    ->has(array("user_id" => $uid, "name" => $title), function(){
        echo json_encode(array("error" => "Name already exists."));
    }, function() use($id, $uid, $title){
        //$this->db->getTable("content")
        $this->update(array("name" => $title), array(
            "user_id"    => $uid,
            "content_id" => $id), function($rows){
            if($rows > 0){
                $error = "";
            }else{
                $error = "Unknown error occurred";
            }
            echo json_encode(array("error" => $error));
        });
    });
}

$this->db->getTable("content") returns a Database Object, and has() is a method in the object. I was hoping that I could use a shorthand way to access $this->db->getTable("content") without having to call it again in the callback, or passing it through call_user_func_array as a parameter or without the use of use().

the method has():
https://github.com/ZingPHP/Zing/blob/master/Zing/src/Modules/Database/DBOTable.php#L311

EDIT

I think in my callback function I need to do something like this, but I don't think it is working:

public function myFunc(callback $callback){
    $callback->bindTo($this, $this);
    return call_user_func_array($callback, array());
}

I got it! I just need to add $newCallback = $callback->bindTo($this, $this); in the callback class, and then in ClassB I can use $this to refer to ClassA.

class ClassA{

    public function doCallback($callback){
        $callback = $callback->bindTo($this, $this);
        call_user_func_array($callback, array());
    }

    public function doSomething(){
        return 12345;
    }

}


class ClassB{

    public function runMe(){
        $classA = new ClassA();

        $classA->doCallback(function(){
            $this->doSomething();
        });

    }

}

You can go through the public interface of ClassA.

class ClassA
{
    public function doCallback($callback)
    {
        call_user_func_array($callback, array());
    }

    public function doSomething()
    {
        echo "Doing something...
";
    }

}


class ClassB
{
    private $_oSubject;

    public function __construct(ClassA $oSubject)
    {
        $this->_oSubject = $oSubject;
    }

    public function runMe()
    {
        $this->_oSubject->doCallback(function() {
            $this->_oSubject->doSomething();
        });
    }
}

$oA = new ClassA();
$oB = new ClassB($oA);
$oB->runMe();