Bueno... creo que por ahí va la solución.
Supongo que lo que habrá que hacer es no sólo referenciar la variable "content" (que en fpdf debe ser "buffer" si no me equivoco), sino todos los atributos del padre.
Con esto estaríamos haciendo que todas las extensiones actúen sobre las mismas variables.
Como les dije, no puedo hacer pruebas... pero tal vez se puedan utilizar funciones como get_class_vars(). Aquí he reescrito la clase de sism82 para que se pueda utilizar con PHP4 y le he agregado la parte que refreencia a todos los atributos comunes. No sé si funcione.
Código PHP:
class FpdfExtensionsHandler{
var $_extensions_dir = 'path/al/directorio/de/las/clases_extensiones/';
var $extensions = array();
var $vars_ref = array(); // Contiene referencias a los atributos comunes.
var $extension = null;
/**
* @return Bool
* @param String $ExtensionName
*/
function LoadExtension($ExtensionName){
$extension_path = $this->_extensions_dir.$ExtensionName
if (file_exists($extension_path) && !class_exists($ExtensionName)){
include_once($extension_path);
$share_content = empty($this->extensions) ? false : true; //si ya se cargo un objeto, se debe compartir sus atributos
$this->extensions[$ExtensionName] = new $ExtensionName();
$this->extension =& $this->extensions->[$ExtensionName]; //se genera una referencia al ultimo objeto instanciado
//si se debe compartir el contenido, se reescribe la variable content del recien instanciado objeto
// Primero capturamos todos los atributos definidos en la clase.
$class_vars = get_class_vars($ExtensionName);
if ($share_content){
//todas las instancias trabajaran sobre los mismos atributos comunes
foreach($this->vars_ref as $var_name => $var_value){
if(array_key_exists($var_name, $class_vars))
$this->extension->$var_name = & $this->vars_ref[$var_name];
}
}else{
//de otra forma se inicializan las referencia a los atributos
foreach ($class_vars as $var_name => $var_value){
$this->vars_ref[$var_name] = & $this->extension->$var_name;
}
}
return true;
}else{
return false;
}
}
/**
* @return Bool
* @param String $ExtensionName
*/
function SetExtension($ExtensionName){
if ( array_key_exists($ExtensionName,$this->extensions) ){
$this->extension =& $this->extensions[$ExtensionName];
return true;
}else{
return false;
}
}
}
Saludos