2009-08-09 8 views
9

Me gustaría usar Zend_Tool (ZF 1.9) con mi proyecto, pero me gustaría poder personalizar la salida predeterminada de los archivos nuevos. Por ejemplo, todos los Controladores deberían tener un encabezado específico preincorporado al resultado con el marcado de phpdoc y la información de licencia para evitar tener que agregar esto como un paso adicional.¿Cómo personalizar la salida Zend_Tool?

Además, para este proyecto en particular (pero no en todos los demás proyectos), necesito que los controladores extiendan algo distinto al controlador Zend predeterminado, como lo he extendido para algunas funciones específicas.

La documentación alude a la capacidad de hacer estas cosas, pero no lo deja muy claro.

Por lo que puedo decir, puedo configurar un directorio ~/.zf (en sistemas basados ​​en *** nix) e incluir proveedores personalizados allí. Sin embargo, esto abarcará toda la máquina en lugar de limitarse a un solo alcance del proyecto. Además, aunque esto agregará nuevos proveedores, (aparentemente) no me permite personalizar la funcionalidad de proveedores existentes.

¡Cualquier ayuda aquí sería muy apreciada!

Respuesta

0

Naturalmente, puede continuar sobrescribiendo cuando defina las clases específicas. Puede declarar que se basan en su clase, en lugar de la clase ZF.

Para proyectos específicos, puede modificar su classpath para que sea una versión personalizada de ZF o posiblemente tenga una carpeta de anulación personalizada. Con una carpeta personalizada, sus cambios no son para toda la máquina, pero tampoco lo es su Zend Framework. en sistemas basados ​​en *** nix, puede aprovechar enlaces simbólicos para mantenerse en una copia de ZF.

¿Está tratando de modificar su código fuente para incluir los encabezados de licencia y PHPdoc? Si es así, lo que hice en el pasado es tener un simple paso de compilación que agrega la información que necesita. Cada tipo de archivo puede tener la información de encabezado apropiada. Puede tener buenas etiquetas para decirle al sistema que ignore los archivos, o que solo ejecute los controladores.

buena suerte, Jacob

1

Esencialmente lo que Jacob quería ir a parar: lo que está hablando parece que se extiende clase simple. Hay una introducción muy simple presentación de diapositivas para extender Zend Framework aquí:

http://www.slideshare.net/PHPBelgium/extending-zend-framework-presentation

También hay un montón de otros recursos disponibles en línea para la ampliación de Zend Framework. Puede crear árboles fuente separados para sus diferentes proyectos, y la funcionalidad común a varios proyectos se puede agregar a clases abstractas que se encuentran en carpetas comunes. Algo como esto no es común, pero he encontrado que funciona en ese tipo de situaciones:

class My_Component_HelloProvider extends My_Common_Component_HelloProvider 
{ 
    public function say() 
    { 
     echo 'Hello from my provider!'; 
    } 

    // public function do() is inherited 

} 

class My_Common_Component_HelloProvider 
    implements Zend_Tool_Framework_Provider_Interface 
{ 
    public function do() 
    { 
     // do something 
    } 
} 

Vamos a saber si esto es diferente de lo que estamos tratando de hacer, pero no hay ninguna razón por la que puede Construir múltiples extensiones de aplicación desde una única instancia de ZF.

Cuestiones relacionadas