מרחבי שמות וקיצורי שמות לנתיבים

Yii משתמשת בשמות מקוצרים לנתיבים באופן נרחב. שם מקוצר משוייך לנתיב מלא לתיקיה או קובץ כלשהו בשרת. השמות המקוצרים כתובים בפורמט של נקודות ( Dot Syntax . ), בדומה לפורמט בו משתמשים למרחבי שמות:

RootAlias.path.to.target

איפה ש RootAlias הוא שם מקוצר לנתיב קיים כלשהו. על ידי קריאה ל YiiBase::setPathOfAlias, ניתן להגדיר שמות מקוצרים לנתיבים. לנוחות השימוש, Yii מגדירה מראש את השמות המקוצרים הבאים כברירת מחדל:

  • system: מתייחס לתיקיה הראשית של הפריימוורק (היכן ש Yii נמצא) .
  • zii: מתייחס לתיקיה של ספריית Zii
  • application: מתייחס לתיקיה הראשית של האפליקציה.
  • webroot: מתייחס לתיקיה בו נמצא קובץ הגישה הראשי. שם מקוצר זה קיים מגרסא 1.0.3 ומעלה.
  • ext: מתייחס לתיקיה בה נמצאים כל התוספים. שם מקוצר זה קיים מגרסא 1.0.8 ומעלה.

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

על ידי שימוש ב YiiBase::getPathOfAlias, ניתן להמיר שם מקוצר לנתיב המדוייק אליו הוא מכוון. לדוגמא, system.web.CController יתורגם לנתיב yii/framework/web/CController לאחר הקריאה.

באמצעות שימוש בשמות מקוצרים, יבוא מחלקות ניתן לעשות בצורה קלה יחסית. לדוגמא, אם ברצוננו לייבא את המחלקה CController, ניתן לקרוא לפקודה הבאה:

Yii::import('system.web.CController');

שימוש בפונקצית ה import שונה משימוש ב include ו require מאחר והיא יותר יעילה. מכיוון שאת המחלקה אותה מייבאים לא מוסיפים מייד אלה בפעם הראשונה בה קוראים למחלקה. ייבוא של אותו מרחב שם כמה פעמים הרבה יותר מהיר משימוש ב include_once ו require_once.

» Tip|טיפ: כשמתייחסים למחלקה אשר נמצאת תחת הפריימוורק של Yii, אין צורך בלייבא את אותה מחלקה. כל מחלקות הבסיס של Yii כבר מיובאות.

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

Yii::import('system.web.*');

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

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

» Tip|טיפ: מאחר ומרחבי שמות לא נתמכים בגרסאות מתחת ל 5.3.0 ב PHP, לא ניתן ליצור אובייקט של שני מחלקות שונות בעלות אותו השם. מסיבה זו, כל שמותיהם של המחלקות הבסיסיות של Yii מתחילות באות 'C' (אשר מייצג 'class' מחלקה) כדי שיהיה ניתן להבדיל בניהם לבין המחלקות שנוצרות על ידי המשתמש וכדי למנוע סתירה בין שמות המחלקות. רצוי ששמות המחלקה הנוצרים על ידי המשתמשים לא יתחילו באות 'C' מאחר וזה שמור למחלקות הבסיסיות של Yii. ושמות מחלקות שנוצרות על ידי המשתמש יתחילו באות אחרת.

«div class="revision"»$Id: basics.namespace.txt 1602 2009-12-18 19:33:34Z qiang.xue $«/div»

Be the first person to leave a comment

Please to leave your comment.