A veces dicen que es mejor no meterse, ya que se puede generar mas confusion que otra cosa. Si no entiendo mal tu problema es que tenes en la jerarquia de clases, como padre a fpdf y varias clases hijas que proveen diferentes servicios. No te alcanzaria con hacer un casting de un objeto padre a uno de los hijos y usar los servicios del hijo? Es decir, :
Código PHP:
$pdf=new PDF();
$algo = (extenedClase)$pdf;
//este tipo de casting no funciona, pero es para entender la idea
$algo->servicio();
Este codigo sacado de
http://ar2.php.net/oop habla de castings.
Código PHP:
<?php
class foo {
function foo($name="foo") {
$this->name=$name;
}
}
class bar extends foo {
function boom() {
echo "BOOOM!";
}
}
$f = new foo();
$temp = explode(":",serialize($f));
$temp[2] = "\"bar\"";
$b = unserialize(implode(":",$temp));
$b->boom();
?>
Si entendi cualquier cosa les pido disculpas...
Suerte :)