במסגרת Zend לפי הגדרות פריסה Module - המשך טיפול

לפי ווטקין לויד סטיבן , יום שלישי 16 2010 08:48 פבואר

כפי מעקב להודעה הקודמת שלי על לכל מודול הגדרות הפריסה מבוססת על Zend Framework , עדכנתי את הקוד דורשים תצורה פחות מכן, לפני (לא שזה נדרש יותר כי כמה שורות תצורת היישום שלך!).

שוב אנו עושים שימוש בבקר Zend פעולה Helper הפנייה ממנו bootstrap כדלקמן:

     / **
      * מגדיר סקריפטים הפריסה על לכל מודול בסיס
      * /
     הפונקציה _initLayoutHelper מוגן ()
	 {
	     זה $-> bootstrap ("frontController ');
	     $ = פריסת Zend_Controller_Action_HelperBroker:: addHelper (
	         חדש Pro_Controller_Action_Helper_SetLayoutPath (APPLICATION_PATH));
	 }

כמעט בדיוק אותו דבר כמו קודם אלא שהפעם אנחנו מעבירים את APPLICATION_PATH מתמיד לתוך הבנאי כנתיב הבסיס שלנו.

הבא עוזר הפעולה הבקר עצמו כעת נראה כדלקמן:

 / **
  * מגדיר את הנתיב הפריסה על בסיס לכל מודול
  *
  @ * הסופר לויד ווטקין
  * @ מאז 16/02/2010
  @ * חבילת Pro
  @ * Subpackage Controller_Action_Helper
  * /

 / **
  * מגדיר את הנתיב הפריסה על בסיס לכל מודול
  *
  @ * הסופר לויד ווטקין
  * @ מאז 16/02/2010
  @ * חבילת Pro
  @ * Subpackage Controller_Action_Helper
  * /
 בכיתה Pro_Controller_Action_Helper_SetLayoutPath
     מרחיב Zend_Controller_Action_Helper_Abstract
 {
	 / **
	  * Base נתיב
	  *
	  * @ מחרוזת var
	  * /
	 $ _path מוגן;

	 / **
	  * Construct
	  *
	  @ * פרמטר מחרוזת $ נתיב
	  * /
	 תפקיד ציבורי __construct ($ נתיב)
	 {
	     setBasePath $ הזה-> ($ נתיב);
	 }

	 / **
	  * הגדרת הנתיב לבסיס
	  *
	  @ * פרמטר מחרוזת $ נתיב
      * /
	 הפונקציה setBasePath הציבור ($ נתיב)
	 {
		 אם (is_string ($ path) |! | ריק ($ נתיב)) {
			 לזרוק חריגה חדשה ("מחרוזת excepted עבור נתיב הבסיס");
		 }
		 זה $-> _path = $ נתיב;
	 }

	 / **
	  * קבל את הנתיב לבסיס
	  *
	  @ * להחזיר מחרוזת
	  * /
	 הפונקציה _getBasePath מוגן ()
	 {
		 אם (is_null ($ זו-> _path)) {
			 אם (! מוגדרת ("APPLICATION_PATH ')) {
				 לזרוק חריגה חדשה ("נתיב Base לא ניתן לקבוע");
			 }
			 זה $-> _path APPLICATION_PATH =;
		 }
		 בתמורה _path $ זה,>;
	 }

     / **
      * סטים הנתיב פריסת מבוסס על מודול
      * /
     הפונקציה preDispatch ציבורית ()
     {
    	 $ = מודול preg_replace (
    	     "/ [^ AZ] / אני ','', $ הזה-> getRequest () -> getModuleName ()
    	 );

	     אם ($ bootstrap = getActionController $ הזה-> ()
	                        - GetInvokeArg> ("bootstrap ')) {

	         $ = צפה getResource $ bootstrap-> ("נוף");
	         $ = LayoutPath _getBasePath $ הזה-> ().
	             "/ מודולים / {$} מודול / פריסות / סקריפטים /";

	         / * אם בספריה קיימת פריסה ולאחר מכן להחיל אותו, אחרת פשוט ליפול
	          * חזרה על המחדל
	          * /
	         אם (is_dir ($ layoutPath)) {
	             getActionController $ הזה-> ()
	                  - GetHelper> ("פריסה")
	                  - SetLayoutPath> ($ layoutPath);
	             $ צפה-> headLink () -> appendStylesheet (
	                 "/ סגנונות / {$} מודול / style.css"
	             );
	         }
    	 }
     }
 }

הערה על פטירתו של נתיב הבסיס שלנו (ראה APPLICATION_PATH) ב הבנאי, יש לנו גם גטר ו סטר על הנתיב לבסיס. בניגוד לגרסה הקודמת של קוד אם נתיב פריסות אינו קיים אז הקוד תיפול בחזרה את הנתיב פריסת ברירת המחדל. אם הנתיב לבסיס לא מוגדר זה ינסה לקבוע את הנתיב הבסיסי מ APPLICATION_PATH מתמדת, אחרת התרעה על חריגה. אני גם נזרק בחוצפה בגיליון סגנון המודול מבוסס למען הסדר הטוב

הפריסה מבוססת מודול נקבעת אם הנתיב סקריפט פריסת קיים (כמובן בשיטה זו ניתן לשנות בקלות). זו מוסיפה קטן מלמעלה מ application.ini ההתקנה (זאת אם הנתיב פריסת קיים PHP יהיה מטמון את התוצאה עבור * ביצועים), אבל בתמורה תקבלו את הנוחות הנוספת של יותר בקלות להפיל במודולים חדשים.

זהו זה, לא שונה בהרבה, אבל אתה לא צריך להוסיף ערך תצורה חדשה בכל פעם שאתם רוצים להוסיף מודול חדש:)

* כדי לנקות את זיכרון המטמון (אם נדרש) להשתמש clearstatcache לתפקד.

2 תגובות ל "Zend Framework לפי הגדרות פריסה Module - המשך טיפול"

  1. Behrang אומר:

    היי, בבקשה תגיד לי איפה ליצור Pro_Controller_Action_Helper_SetLayoutPath בכיתה עם איזה שם הקובץ
    אני Newbie ב Zend.
    תודה

  2. היי Behrang, ליצור את עוזר פעולה עם לפי השם שאתה אוהב, יש לי "הספריה" שלי עם מרחב "המקצוענים". אתה יכול בקלות לקרוא "SetLayoutPath" המעמד ולשים אותו בכל מקום שבו אתה רוצה, בתנאי הקוד יכול למצוא אותו ואתה להאריך את השיעורים הנדרשים

השאירו תגובה













פנורמה לפי נושאים Themocracy

9 מבקרים מקוון עכשיו
5 אורחים, 4 בוטים, 0 חברים
מקס מבקרים היום: 17 בשעה 12:28 UTC
החודש: 26 ב 2011/07/05 12:35 UTC
השנה: 130 ב 28-03-2011 22:40 UTC
כל הזמן: 130 ב 28-03-2011 10:40 UTC