מודל-תצוגה-קונטרולר (MVC)

Yii מאמצת את השימוש בדפוס של מודל-תצוגה-קונטרולר (MVC) אשר משתמשים בה לרוב בשפות פיתוח. MVC נועד להפרדת הקוד מהעיצוב כדי שלמפתחים יהיה יותר קל לשנות חלק מסויים בקוד מבלי להשפיע על חלק אחר. ב MVC, המודל מייצג את המידע (התוכן) והלוגיקה; התצוגה מכיל אלמנטים של ממשקי המשתמש כמו טקסט, טפסים; והקונטרולר מנהל את התקשורת בין המודל לתצוגה.

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

הדיאגרמה הבאה מציגה את המבנה הסטטי של אפליקציה ב Yii:

מבנה סטטי של אפליקציה ב Yii

מבנה סטטי של אפליקציה ב Yii

1. רצף עבודה אופייני

הדיאגרמה הבאה מציגה את רצף העבודה האופייני של אפליקצית Yii כשהיא מנהלת בקשת משתמש:

רצף עבודה אופייני לאפליקציה ב Yii

רצף עבודה אופייני לאפליקציה ב Yii
  1. משתמש מבצע בקשה לקישור http://www.example.com/index.php?r=post/show&id=1 ושרת הווב מטפל בבקשה ומריץ את קובץ הכניסה הראשי index.php.
  2. קובץ הכניסה הראשי יוצר אובייקט של האפליקציה ומריץ אותו.
  3. האפליקציה מקבלת את המידע המפורט אודות בקשת המשתמש מרכיב האפליקציה בשם request.
  4. האפליקציה מחליטה את הקונטרולר והפעולה שצריך להריץ בעזרת רכיב אפליקציה בשם urlManager. בדוגמא זו, הקונטרולר הוא post אשר מנותב אל המחלקה PostController; והפעולה היא show אשר פעולתה מוגדרת בקונטרולר.
  5. האפליקציה יוצרת אובייקט של אותו קונטרולר להמשך הטיפול בבקשת המשתמש. הקונטרולר מחליט שהפעולה show מנותבת למתודה במחלקה בשם actionShow. לאחר מכן היא יוצרת ומריצה פילטרים (לדוגמא הרשאות גישה, בדיקות) המצורפים לפעולה זו. הפעולה רצה אם היא עוברת את תהליך הפילטרים.
  6. הפעולה קוראת מודל של Post אשר מספר המזהה היחודי שלו הוא 1 מתוך מסד הנתונים.
  7. הפעולה מגישה קובץ תצוגה בשם show עם המודל Post.
  8. קובץ התצוגה קורא ומציג את המאפיינים של מודל ה Post.
  9. קובץ התצוגה מריץ כמה וידג'טים.
  10. התוכן הסופי של קבצי התצוגה נכנס אל תוך תבנית.
  11. הפעולה מסיימת את הגשת קבצי התצוגה ומציגה את התוכן למשתמש.

«div class="revision"»$Id: basics.mvc.txt 1622 2009-12-26 20:56:05Z qiang.xue $«/div»

Be the first person to leave a comment

Please to leave your comment.