Zend Framework Configuración por Esquema Module - Seguimento

Por Watkin Steven Lloyd , martes 16 febreiro 2010 08:48 pm

Seguindo ao meu post anterior sobre a configuración do esquema por módulo base para o Zend Framework , eu teño actualizado o código para esixir menos entón a configuración de antes (non que era necesario máis que algunhas liñas na súa configuración da aplicación!).

De novo facemos uso dun controlador de Auxiliar de Acción Zend invocando o de inicio do seguinte xeito:

     / **
      * Configura scripts esquema nun módulo-base por
      * /
     _initLayoutHelper función protexida ()
	 {
	     $ This-> inicio ("frontController ');
	     $ Esquema = Zend_Controller_Action_HelperBroker: addHelper (
	         nova Pro_Controller_Action_Helper_SetLayoutPath (APPLICATION_PATH));
	 }

Case exactamente a mesma de antes só que desta vez pasamos o APPLICATION_PATH constante para o constructor como o noso camiño de base.

A continuación, o auxiliar de acción propio controlador agora é o seguinte:

 / **
  * Establece o camiño do esquema nunha base por módulo
  *
  * @ Author Lloyd Watkin
  * @ Since 16/02/2010
  * @ Paquete Pro
  subpackage * @ Controller_Action_Helper
  * /

 / **
  * Establece o camiño do esquema nunha base por módulo
  *
  * @ Author Lloyd Watkin
  * @ Since 16/02/2010
  * @ Paquete Pro
  subpackage * @ Controller_Action_Helper
  * /
 Pro_Controller_Action_Helper_SetLayoutPath clase
     esténdese Zend_Controller_Action_Helper_Abstract
 {
	 / **
	  * Camiño Base
	  *
	  * @ Var cadea
	  * /
	 protected $ _path;

	 / **
	  * Construír
	  *
	  * @ Paran cadea $ path
	  * /
	 función pública __construct ($ path)
	 {
	     setBasePath $ this-> ($ ruta);
	 }

	 / **
	  * Establecer camiño de base
	  *
	  * @ Paran cadea $ path
      * /
	 setBasePath función pública ($ ruta)
	 {
		 if (is_string ($ ruta) |! | empty ($ ruta)) {
			 throw new Exception ('string Con excepción de camiño de base');
		 }
		 $ This-> _path = $ camiño;
	 }

	 / **
	  * Obter o camiño de base
	  *
	  * @ Return cadea
	  * /
	 _getBasePath función protexida ()
	 {
		 if (is_null ($ this-> _path)) {
			 if (! defined ('APPLICATION_PATH')) {
				 throw new Exception ("camiño da base de datos non pode ser determinada ');
			 }
			 $ This-> _path APPLICATION_PATH =;
		 }
		 retorno _path $ this->;
	 }

     / **
      * Establece o camiño do esquema baseado no módulo
      * /
     preDispatch función pública ()
     {
    	 $ Module = preg_replace (
    	     '/ ^ [AZ] / i','', $ this-> GetRequest () - getModuleName> ()
    	 );

	     if ($ inicio getActionController = $ this-> ()
	                        -> GetInvokeArg ('inicio')) {

	         $ View = $ GetResource inicio-> ('view');
	         LayoutPath _getBasePath $ = $ this-> ().
	             "/ Modules / $ {} módulo / esquemas / scripts /";

	         / * Se o directorio esquema existe despois aplicala lo, se non, acaba de caer
	          * Volta no padrón
	          * /
	         if (is_dir ($ layoutPath)) {
	             getActionController $ this-> ()
	                  -> GetHelper ('layout')
	                  - SetLayoutPath> ($ layoutPath);
	             $ View-> headLink () -> appendStylesheet (
	                 "/ Estilos / {$ módulo} / style.css"
	             );
	         }
    	 }
     }
 }

Teña en conta o falecemento do noso camiño de base (cf. APPLICATION_PATH) no constructor, temos tamén un getter e Setter para o camiño de base. A diferenza coa versión precedente do código de que o camiño esquemas non existe, entón o código pode caer cara atrás o camiño patrón de deseño. Se o camiño de base non está definido que ha tratar de determinar o camiño base do APPLICATION_PATH constante, se non, unha excepción é lanzada. Eu tamén descaradamente tirado nunha folla de estilo do módulo-base para unha boa medida

O esquema do módulo de base é determinada a partir de que o camiño do script de esquema existente (obviamente que este método pode ser facilmente cambiado). Iso non engade unha pequena sobrecarga da instalación application.ini (con todo o camiño hai esquema PHP ha almacenar en memoria o resultado para o desempeño *), pero a cambio gañou a comodidade de máis facilmente caer en novos módulos.

É iso aí, non moi diferente, pero non é preciso engadir unha entrada nova configuración cada vez que quere engadir un módulo:)

* Para baleirar a memoria caché (se é necesario) o uso clearstatcache función.

2 Responses to "Zend Framework Configuración por Esquema Module - Follow Up"

  1. Behrang di:

    Ola, por favor me diga onde crear Pro_Controller_Action_Helper_SetLayoutPath clase con cal nome de arquivo
    Son novato no Zend.
    grazas

  2. Ola Behrang, crear o auxiliar de acción con calquera nome que queres, eu teño a miña "biblioteca" con espazo propio 'Pro'. Podería facilmente chamar de "SetLayoutPath 'da clase e poñelas onde queira, sempre que o código pode atopo la e extender as clases obrigatorias

Deixe unha resposta













Panorama Tema por Themocracy

8 convidados en liña agora
4 persoas, 4 bots, 0 membros
Max visitantes hoxe: 14 ás 02:02 UTC
Este mes: 22 en 2011/08/06 12:30 UTC
Este ano: 130 en 28-03-2011 22:40 UTC
Todas as horas: 130 en 28-03-2011 10:40 UTC