Lo ideal seria que se mejore el diseño para no tener problemas futuros.
Una solución que se me ocurrió seria esto, talvez no sea lo mejor, pero te puede ayudar.
Código PHP:
class A {
public function elMetodo() {
echo "soy el metodo especial de A";
}
}
class B extends A {
public function elMetodo() {
echo "Yo soy el metodo sobrecargado en B";
parent::elMetodo();
}
}
class C {
private $_classA;
private $_classB;
public function __construct(A $classA, B $classB ){
$this->_classA = $classA;
$this->_classB = $classB;
}
public function getComponent($component){
switch($component){
case 'A':
return $this->_classA;
break;
case 'B':
return $this->_classB;
break;
}
}
}
$c = new C(new A(), new B());
$c->getComponent('A')->elMedoto() //soy el metodo especial de A
$c->getComponent('B')->elMedoto() //Yo soy el metodo sobrecargado en B
Investiga sobre
Dependence Injection creo que ahí podría estar la solución a tu problema.
Saludos