PHP覆盖单个实例的功能

In javascript i know it is possible to simply override a class-method of a single instance but I am not quite sure how this is managable in PHP. Here is my first idea:

class Test {
    public $var = "placeholder";
    public function testFunc() {
        echo "test";
    }
}

$a = new Test();

$a->testFunc = function() {
    $this->var = "overridden";
};

My second attempt was with anonymous function calls which unfortunately kills the object scope...

class Test {
    public $var = "placeholder";
    public $testFunc = null;
    public function callAnonymTestFunc() {
        $this->testFunc();
    }
}

$a = new Test();

$a->testFunc = function() {
    //here the object scope is gone... $this->var is not recognized anymore
    $this->var = "overridden";
};

$a->callAnonymTestFunc();

In order to fully understand what you are trying to achieve here, your desired PHP version should be known first, PHP 7 is more ideal for OOP approaches than any previous version.

If the binding of your anonymous function is the problem, you can bind the scope of a function as of PHP >= 5.4 to an instance, e.g.

$a->testFunc = Closure::bind(function() {
    // here the object scope was gone...
    $this->var = "overridden";
}, $a);

As of PHP >= 7 you can call bindTo immediately on the created Closure

$a->testFunc = (function() {
    // here the object scope was gone...
    $this->var = "overridden";
})->bindTo($a);

Though your approach of what you are trying to achieve is beyond my imagination. Maybe you should try to clarify your goal and I'll workout all possible solutions.

I would use inheritance principle of OOP which works in most high-level languages:

Class TestOverride extends Test {
public function callAnonymTestFunc() {
//overriden stuff
}
}

$testOverriden = new TestOverriden();
$testOverriden->callAnonymTestFunc();