Ver Mensaje Individual
  #39 (permalink)  
Antiguo 31/03/2005, 20:06
Avatar de jpinedo
jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 21 años, 3 meses
Puntos: 41
Si se dan cuenta el Output() lo hice desde el objeto "extension". Se supone que si lo hago desde cualquier otro objeto debería funcionar igual. Pero si en lugar de eso pongo
Código PHP:
$pdf->fpdf->Output(); 
Entonces en este caso se ignora el JavaScript y sólo se ejecuta lo que se escribió directamente en el padre.
En realidad no es que se ignore el JavaScript... lo que pasa es que esa extensión sobreescribe un par de métodos que son llamados por Output(). Estos métodos son _putresources() y _putcatalog().

En la sobreescritura se realizan los cambios necesarios para incluir JavaScript. Si los llamas desde "extension" (mientras utilizas la extensión de JavaScript, claro) se ejecutan los métodos sobreescritos y se incluye el JavaScript. Pero si los llamas desde fpdf (el padre, o desde cualquier otra extensión que no sea la de JavaScript) no se ejecutará, como es lógico, pues el método original de fpdf no tiene por qué estar enterado que ha sido reescrito por uno de sus hijos.

Hemos referenciado todos los atributos, pero no se va a poder hacer lo mismo con los métodos debido a que los atributos sí son comunes, mientras que cada extension sobreescribe los métodos a su conveniencia.

Todo funcionará bien, mientras que no haya otra extension que sobreescriba los mismos métodos... y además habría que hacer el output siempre desde la extensión de JavaScript. Pero el funcionamiento de la clase estaría demasiado condicionado y no cumpliría con lo que queríamos al comienzo. Además que es seguro que varias extensiones sobreescribirán los métodos críticos.

Conclusión: Cluster... creo que por ahora vas a tener que seguir haciendo las cosas como las haces.

Saludos

Última edición por jpinedo; 31/03/2005 a las 20:48