Umm, ahí me has pillado... no lo tengo aquí.
Pero supongamos dos clases:
Código:
Template:
private $templateName;
private $vars;
private $templateFile;
__construct($auxTemplate, $auxFile)
public function setVar($auxVar, $auxValue)
public function getVar($auxVar=NULL)
public function getTemplate()
public function getFile()
public function getVars()
Esta clase es bastante simple, tiene el nombre de una plantilla, su fichero físico (incluido el path relativo) y una serie de variables que serán las que se meterán en la plantilla.
Style:
private $style; //nombre del estilo
private $templates; //lista con los templates de ese estilo
private $cssFiles; // Lista de ficheros css de ese estilo
private $jsFiles; // Lista de ficheros javascript de ese estilo
private $currentTemplate; //template seleccionado actualmente para trabajar con él.
private $basePath; //el path base del estilo
private $preparedTemplates; //array donde se irán almacenando las plantillas preparadas para mostrar
(otras variables de configuración)
function __construct($auxStyle, $auxStyleConfigFile, $auxStylePath)
private function loadStyleConfigFile($auxPath) // Carga el fichero de configuración (se llama desde el constructor)
getters y setters...
public function existsTemplate($auxTemplate) // Comprueba que una plantilla existe en ese estilo (está cargada en el array de nombres => ficheros)
public function emptyTemplate() //Vacía currentTemplate
public function selectTemplate($auxTemplate) //Crearía un objeto de la clase Template en base a los datos propios del estilo (el fichero del template, el path base...)
public function prepareTemplate() // añade la plantilla a un array de Templates que ya se han "preparado"
public function addVar($auxVar, $auxValue) // agregaría una variable a la plantilla actual <- Puede que por éste método me crucifiqueis!
private function requireTemplate($auxPath, $vars) // Este método es el que hace un require del fichero para agregar las variables y devuelve el HTML resultante. (Puede que estuviese mejor en la clase Template)
public function showCurrentTemplate()
public function showTemplate($auxTemplate)
public function showAll()
Más o menos sería algo parecido.... Creo que sé cómo es el sistema que me planteais (que es el que uso en la relación entre otras clases), lo que no veo del todo claro es que en éste escenario sea la mejor opción. Soy consciente de las limitaciones (bueno, quizás no totalmente consciente y por ello no lo veo tan claro).
La idea es que se cargue un estilo. Entonces en el fichero de configuración se especifican todas las plantillas que tiene, sus archivos, los ficheros css o js que utiliza, los paths, etc...
Una vez que tenemos un objeto de esta clase, trabajamos con las plantillas, una o varias. Tal y como está planteado sólo se podría usar una en cada momento (pero esto se podría cambiar). Cuando se selecciona una plantilla para trabajar con ella, se crea el objeto de la clase Template.
Ahora se van agregando las variables que se mostrarán en esa plantilla. Una vez que estén listas, la metemos en un array de la clase estilo.
Si queremos trabajar con otro template, el proceso es el mismo.
Cuando están preparadas todas las plantillas de ese estilo, podemos usar el método showAll (mal nombre, cierto), que lo que hace es evaluar las plantillas preparadas para generar la salida HTML, que se le devolverá a una tercera clase... pero ese es ya otro asunto!!
Entiendo que puede no estar bien especificado, pero es la forma en la que lo ideé. Si lo hiciese perfectamente me dedicaría a ello profesionalmente!
Saludos y gracias por "perder" el tiempo con esto!