בלינק הבא יש הסבר מפורט להרבה מאוד אופרטורים שונים וסימנים מגוונים ב-php.
קטגוריה: web
מדריך Yii 2 – הרצת אפליקציות (הבסיס)
אחרי שמתקינים את Yii 2 ,ניתן לגשת לאפליקציה באמצעות ה-URL : http://hostname/basic/web/index.php או http://hostname/index.php תלוי בהגדרות של שרת ה-Web. במדריך הזה נלמד איך מאורגן הקוד, ואיך מנותבת כל בקשה (request) של הגולש .
הנחת יסוד : יש לכם את תיקית basic/web בתיקיה שמחזיק שרת ה-web ( נניח localhost/basic/web) . כמובן, אם התקנתם את זה בתיקיה אחרת , תתאימו את הכתובות של ה-URL בהתאם.
אפליקצית ה-Basic, מכילה 4 עמודים :
- דף הבית שניתן להגיע אליו דרך ה-URL –
http://hostname/index.php - דף ה-About
- דף ה-Contact שמכיל טופס יצירת קשר דרך מייל
- דף login – שמכיל את היכולת לבדוק משתמש, אם תנסו אותו,עם admin/admin תוכלו לראות שהמילה login הופכת להיות logout.
העמודים האלו חולקים יחד את אותו Header , Footer, Menu .
בתחתית אפשר לראות כלי חזק מאוד של Yii שנקרא debugger tool שמספק עזרה מאוד נחוצה כמו הודעות Log , שאילתות ל-DB, סטטוטים של בקשות ועוד.
מבנה האפליקציה ב-Yii
- תיקית basic – מכילה את כל האפליקציה
- composer.json – לשימוש באמצעות ה-Composer
- תיקית Config – הגדרות
- console.php הגדרות של ה-console
- web.php – הגדרות של האפליקציה
- תיקית commands – מכילה פקודות של ה-console
- תיקית controllers – מכילה את קבצי הקונטרולרים
- תיקית models – מכילה את קבצי המודלים
- תיקית runtime – מכילה קבצי ש-Yii מייצרת תוך כדי ריצה, כמו לוגים, ו-cache.
- תיקית vendor – מכילה חבילות שהותקנו על ידי ה-composer, כולל את קבצי הליבה של Yii.
- תיקית views – מכילה את קבצי ה-view
- תיקית web
- index.php – קובץ הגישה לאפליקציה
- assets – קבצי css + JS
- קובץ yii (או קובץ yii.bat) – קובץ ה-console.
מה צריך להיות חשוף למשתמש ?
ב-Yii אפשר לחלק את הקבצים כך : כל מה שנמצא בתיקית web, נגיש לגולש, כל השאר – צריך להיות לא נגיש לגולש, ונגיש רק לשרת/לסקריפטים.
Yii משתמשת כמו פריימורקים רבים בשיטת/מתודולגית MVC, כפי שבוודאי שמת לב מהמבנה של התיקיות -models/views/controllers – מכילות כל אחת את הקבצים הרלוונטים.
איך מנותבת בקשה/request ב-Yii ?
לכל אפליקציה יש קובץ index.php שהוא הקובץ היחיד שנגיש לגולש. קובץ זה לוקח את ה-request ויוצר מופע של המחלקה application ואז מתחיל לטפל ב-request.
המחלקה application מפענחת את ה-request עם סיוע של רכיבי ה-components ומנתבת את ה-request בין רכיבי ה-MVC.
יש לציין שבחלק של ה-views, נעזרים ב-Widgets כדי לבנות את ה-views.
ניתוב של request ב-Yii – שלב אחרי שלב
- הגולש מקליד כתובת, ונשלח request ל-enrty script, שהוא כאמור , קובץ web/index.php
הגדרות ה-configuration נטענות . ובנוסף נוצר מופע (instance) של המחלקה application כדי לטפל ב-request.- המחלקה application מפענחת את הנתיב – route, עם עזרה של מרכיב שנקרא -request.
- נוצר מופע (instance) של controller כדי לטפל ב-request.
- הקונטרולר יוצא מופע (instance) של ה-action הדרוש ומפעיל Filters אם יש צורך.
- אם אחד ה-Filters כושל, הפעולה כולה נעצרת (כלומר ה-action כושל).
- אם כל ה-Filters עוברים בהצלחה, אז ה-Action מבוצעת.
- כאן ה-Action תופס פיקוד, ומבצע טעינה של המודל (model) ואם זהו מודל שקשור ל-DB, אז נשלפות הרשומות מה-DB.
- ה-Action מייצר View ומחזיר את ה-view ביחד עם נתוני ה-model אל השלב הבא. (הייצור של ה-View מכונה render) .
- התוצאה מוחזרת אל רכיב ה-response.
- רכיב ה-reposnse שולח תשובה אל הדפדפן של הגולש.
זכויות יוצרים : המדריך פורסם לפי התנאים של Yii , והמקור נמצא בקישור הזה.
התקנת yii2 על linux ללא composer
מורידים את הקובץ tar מכאן http://www.yiiframework.com/download/
לאחר מכן,
מעתיקים אותו לתיקית ה-web שלכם.
נותנים לו הרשאות מלאות (אפשר פשוט לתת בעלות ליוזר של apache, באמצעות chown )
ואז גולשים בדפדפן אל התיקיה ו-גמרנו.
http://localhost/basic/web/index.php
הערה : אומנם לפי התיעוד הרשמי, אמורים להיכנס לתיקית config, ולערוך את קובץ web.php – ולרשום בו סיסמא כלשהיא להצפנת ה-cookies , בערך cookieValidationKey, אבל אם אתם מורידים את פרויקט ה-basic/advanced , ולא פריימוורק ריק, אז זה קיים כבר.
אם מסיבה כלשהיא זה לא עובד , ניתן לבצע בדיקה של דרישות ברירת המחדל באמצעות גלישה אל http://localhost/basic/requirements.php
או הפעלה של קובץ זה משורת הפקודה.
הגדרות מומלצות עבור ה-Apache בשביל yii2 בסביבת production
בשרת production, היינו רוצים לגלוש לאפליקציה/אתר שלנו ישירות כך : http://www.example.com/index.php
ולא כך : http://www.example.com/basic/web/index.php
לשם כך נדרש להפנות את ה-Virtual host ישירות אל תיקית basic/web.
בנוסף נרצה בוודאי להסתיר את index.php משורת הכתובת.
כדי לבצע את הדברים האלו, יש להגדיר בקובץ httpd.conf , או בתוך הקובץ שמגדיר את ה-virtual host, את ההגדרות הבאות :
# Set document root to be "basic/web"
DocumentRoot "path/to/basic/web"
<Directory "path/to/basic/web">
# use mod_rewrite for pretty URL support
RewriteEngine on
# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule . index.php
# ...other settings...
</Directory>
יש לזה יתרונות נוספים, ברגע שמגדירים את bsic/web כתיקית ברירת המחדל של ה-virtual host, מונעים למעשה מהגולשים אפשרות לגשת לתיקיות פנימיות רגישות, שהם אינם צריכים לראות.
זכויות יוצרים : המדריך פורסם לפי התנאים של Yii , והמקור נמצא בקישור הבא : http://www.yiiframework.com/doc-2.0/guide-start-installation.html