אפליקציה

האפליקציה מהווה עיבוד ראשוני של הבקשות אשר נכנסות למערכת. המטרה העיקרית שלה היא לקבל את בקשת המשתמש ולהפנות אותה לקונטרולר המתאים להמשך עיבוד הנתונים. בנוסף היא משמשת לחלק המרכזי של כל ההגדרות באפליקציה. מסיבה זו,האפליקציה נקראת גם בשם 'קונטרולר-ראשי'.

האפליקציה נוצרת על ידי סקריפט הכניסה הראשי. ניתן לגשת לכל אובייקט וערך באפליקציה בעזרת Yii::app().

1. הגדרות האפליקציה

כברירת מחדל, אפליקציה היא אובייקט של CWebApplication. להתאמה אישית, אנחנו בדרך כלל מספקים קובץ הגדרות (או מערך) כדי לאתחל את המאפיינים של קובץ/מערך ההגדרות בעת יצירת האפליקציה. דרך נוספת להתאמה אישית של האפליקציה היא על ידי הרחבת CWebApplication.

ההגדרות הם מערך של אלמנטים בפורמט של מפתח=>ערך. כל מפתח מייצג את שמו של המאפיין באובייקט של האפליקציה, וכל ערך את ערך ברירת המחדל של אותו מאפיין. לדוגמא, ההגדרות הבאות מגדירות את שם האפליקציה ו קונטרולר ברירת המחדל של האפליקציה.

array(
    'name'=>'Yii Framework',
    'defaultController'=>'site',
)

בדרך כלל אנחנו שומרים את קובץ ההגדרות של האפליקציה בקובץ PHP נפרד (לדוגמא protected/config/main.php). בתוך הקובץ אנחנו מחזירים את מערך ההגדרות בצורה הבאה,

return array(...);

כדי ליישם את ההגדרות, אנחנו מעבירים את שם קובץ ההגדרות כפרמטר לקונסטרקטור (constructor) של האפליקציה, או ל Yii::createWebApplication() כמו הדוגמא הבאה, שבדרך כלל נעשית ב סקריפט הכניסה הראשי.

$app=Yii::createWebApplication($configFile);

טיפ: אם ההגדרות של האפליקציה הם מורכבות, ניתן לפצל אותם לכמה קבצים, כל אחד מחזיר חלק אחר ממערך ההגדרות הכולל. לאחר מכן, בקובץ ההגדרות הראשי של האפליקציה ניתן להשתמש בפונקצית ה include של PHP כדי להוסיף את שאר קבצי ההגדרות ולאחד אותם למערך הגדרות אחד כולל.

2. ספרית הבסיס של האפליקציה

ספרית הבסיס של האפליקציה מתיחחסת לתיקיה הראשית אשר מכילה את כל קבצי ה PHP והמידע של המערכת, הרגישים מבחינת אבטחה. כברירת מחדל, זוהי תת תיקיה בשם protected אשר נמצאת תחת התיקיה אשר מכילה את סקריפט הכניסה הראשי. ניתן לשנותה על ידי הגדרת המאפיין basePath בהגדרות האפליקציה.

התוכן תחת התיקיה הראשית של האפליקציה צריך להיות מוגן מגישה וצפייה ישירה ועקיפה על ידי משתמשים. בעזרת Apache HTTP, ניתן לבצע זאת בצורה פשוטה על ידי הוספת קובץ htaccess. תחת התיקיה הראשית. הקובץ htaccess. אמור להכיל את הקוד הבא,

deny from all

3. רכיב האפליקציה

הפונקציונליות של האפליקציה ניתנת להתאמה אישית בצורה קלה בעזרת הארכיטקטורה הגמישה של רכיב זה. האפליקציה מנהלת סט של רכיבי-אפליקציה, כל אחד מיישם אפשרויות מסויימות. לדוגמא, האפליקציה נעזרת ברכיבים CUrlManager ו CHttpRequest כדי לקבל את בקשת המשתמש ולנתב אותה למקום המתאים.

על ידי הגדרת ערך הרכיבים באפליקציה, ניתן להגדיר בצורה אישית את הערכים והמחלקה של כל רכיב אשר משתמשים בו באפליקציה. לדוגמא, ניתן להגדיר את הרכיב CMemCache בצורה כזו שיעבוד מול כמה שרתי memcache כדי לשמור תוכן במטמון,

array(
    ......
    'components'=>array(
        ......
        'cache'=>array(
            'class'=>'CMemCache',
            'servers'=>array(
                array('host'=>'server1', 'port'=>11211, 'weight'=>60),
                array('host'=>'server2', 'port'=>11211, 'weight'=>40),
            ),
        ),
    ),
)

בקוד המוצג למעלה, אנחנו מוסיפים את האלמנט cache למערך של ה components. האלמנט cache הצהיר שהמחלקה של הרכיב הזה הינה CMemCache והערך של servers (שרתים) צריך להיות מוגדר כפי שהוא מוצג בקוד למעלה.

כדי לגשת לרכיב באפליקציה, יש להשתמש ב Yii::app()->ComponentID, כש ComponentID מתייחס לשם היחודי של הרכיב (לדוגמא Yii::app()->cache).

ניתן לכבות כל רכיב באפליקציה על ידי הגדרת הערך enabled ל false בהגדרות של אותו רכיב. ברגע שננסה לגשת לרכיב שהוא לא פעיל נקבל את הערך השווה ל Null.

טיפ: כברירת מחדל, רכיבים באפליקציה נוצרים בעת בקשתם. זה אומר שרכיב באפליקציה יכול לא להווצר כלל אם לא קראו לו במהלך הבקשה של המשתמש. כתוצאה מכך, הביצועים הכללים של האפליקציה לא מושפעים גם אם האפליקציה מוגדרת עם הרבה רכיבים. חלק מהרכיבים באפליקציה (לדוגמא CLogRouter) צריכים להווצר בכל מקרה בין אם קראו לאותו רכיב או לא. כדי לבצע זאת, רשום את המזהה היחודי שלהם במאפיין preload (טעינה מראש) של האפליקציה.

4. רכיבים מרכזיים באפליקציה

Yii מגדירה מראש סט של רכיבים מרכזיים באפליקציה כדי לספק אפשרויות משותפות בקרב אפליקציות ווב. לדוגמא, הרכיב request מעבד את בקשת המשתמש ומאפשר שימוש במידע כגון קישורים, עוגיות. על ידי הגדרת המאפיינים של רכיבים בסיסיים אלו, ניתן לשנות את אופי ההתנהלות של Yii בכל היבט כמעט.

למטה מופיעים הרכיבים הבסיסיים שמוגדרים מראש על ידי CWebApplication.

5. מחזור החיים של האפליקציה

בעת טיפול בבקשת המשתמש, אפליקציה תעבור במחזור החיים הבא:

  1. אתחול האפליקציה בעזרת CApplication::preinit;

  2. הגדרת מחלקת הטעינה האוטומטית ומחלקת טיפול בשגיאות;

  3. רישום רכיבים בסיסים של האפליקציה;

  4. טעינת הגדרות האפליקציה;

  5. אתחול האפליקציה בעזרת CApplication::init

    • רישום התנהלות האפליקציה;
    • טעינת רכיבים סטטיים של האפליקציה;
  6. העלאת אירוע onBeginRequest;

  7. תהליך עיבוד בקשת המשתמש:

    • עיבוד הבקשה;
    • יצירת קונטרולר;
    • הרצת קונטרולר;
  8. העלאת אירוע onEndRequest;

$Id: basics.application.txt 1601 2009-12-18 04:31:19Z qiang.xue $

Be the first person to leave a comment

Please to leave your comment.