Design pattern for adapter
You should relearn design patterns.  Until you do this, your framework is bound to be messed up and poorly architected, if only because of your flawed axioms.

The Adapter Pattern is for taking class A implements InterfaceA and wrapping it inside a class Adapter so that you can use it with the same API as class B implements InterfaceB. It has nothing to do with executing different code or whatever inside another class.

The Strategy Pattern is meant to reduce cyclomatic complexity (basically, lots of nested if statements). It works like this:

interface BasicLogicI {
    public function execute();
}

class GreetingLogic implements BasicLogicI {
    public function execute() { echo "Hi!\n"; }
}

class DismissLogic implements BasicLogicI {
    public function execute() { echo "Bye!\n"; }
}

class Speaker {
    protected $strategy;

    public function __construct($strategy) {
        $this-&gt;changeContext($strategy);
    }
    public function changeContext($strategy) {
        unset($this-&gt;strategy);
        $this-&gt;strategy = $strategy;
    }
    public function speak() {
        $this-&gt;strategy-&gt;execute();
    }
}

$speaker = new Speaker(new GreetingLogic);
$speaker-&gt;speak();
$speaker-&gt;changeContext(new DismissLogic);
$speaker-&gt;speak();
// Output: Hi!
//         Bye!