Zend Framework – הגדרות ראשוניות ו-hello world

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

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

זנד עובדת לפי Front Controller design – כלומר כל הקריאות לאפליקציה שלנו נעשות דרך index.php. לכך אחראים שני דברים – קובץ ה-htaccess שדואג לקחת כל בקשה ולהעביר אותה ל-index.php וכן ה-index.php עצמו שיודע לעשות כל מה שצריך ובמיוחד לוודא שהסביבה נטענת במלואה. התהליך הזה נקרא Bootstrap.

כיוון שביצענו התקנה של זנד, יש לנו אפליקציה ראשונית. כיוון שביצענו כבר include ברמת השרת אז אנחנו לא חייבים לוודא שב-bootstrap יש את כל ה-includes אלא ישר לשבת ולהתחיל לפתח.
כיוון שב-index.php כאמור אין לנו מה לעשות, והתיקיות של הפריימוורק עצמו לא נמצאות כלל בתיקיה של הפרויקט שלנו. התיקיה שרלוונטית מבחינתנו היא תיקית application שבה יש את ה-controllers, ה-view והמודלים שלנו. נפתח את ה-IDE החביב עלינו ונראה שיש שם כמה תתי תיקיות.

הגדרות ראשוניות

בתת תיקית config יש קובץ אחד בשם application.ini שבו יש את ההגדרות השונות למצבים השונים של המערכת – development, testing ו-production שתואמות לשלבי הפיתוח השונים. ראשית יש הגדרה של מצב development עם כל מיני משתנים שלא צריך להיות גאון גדול כדי להבין אותן. כמו למשל:


phpSettings.display_startup_errors = 0

אחרי זה אנחנו יכולים לראות משהו שנראה על פניו מוזר:


[development : production]

מה שזה אומר הוא שיש לנו מצב development שיורש מ-production ובו אנחנו כמובן יכולים לדרוס חלק מההגדרות כמו שבאמת עושים. אנו נראה שבמצב development יש לנו את הגדרת phpSettings.display_startup_errors = 1 שהיא די הגיונית. כאשר אתה מפתח אתה מאד מעוניין לראות שגיאות ובעיות בעוד כאשר אתה במצב פרודקשן עדיף שלא לראות את השגיאות בתור הודעות על כל המסך… (מקרה אמיתי).

לפיכך אנחנו יכולים לראות שמצב ה-development יורש מהגדרות של production את כל ההגדרות למעט כמה הגדרות שהוא דורס ושם במקומן הגדרות משלו. איך אנו קובעים מה המצב שלנו? ניגש לקובץ index.php שנמצא ב-public ונראה שיש שם את ההגדרה:


// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development'));


אני שיניתי את ההגדרה ל-development. מעכשיו אנחנו במוד של פיתוח. דבר שימושי נוסף שאפשר לעשות זה להגדיר את הקישור למסד הנתונים. בואו ונוסיף את ההגדרות הבאות:


resources.db.adapter = PDO_MYSQL
resources.db.params.host = localhost
resources.db.params.username = YOURUSERNAME
resources.db.params.password = 123456
resources.db.params.dbname = zf-tutorial

היכן נוסיף? מן הסתם תחת ה-production כי ממילא שאר המצבים יורשים ממנו.

שלום עולם

בואו ונסתכל על שאר התיקיות על מנת להבין מה הולך פה. תיקית controllers היא תיקיה חשובה, בואו ונסתכל על ה-controllers, אנו נראה שיש שני קבצים. זה שמעניין אותנו הוא IndexController.php, אם נכנס אליו, אנו נראה שיש לו שתי מתודות חשובות. אחת מהן היא init שעליה נדבר אחר כך והשניה היא indexAction. קבוצת ה-actions היא קבוצה מאד חשובה בזנד והיא מאפשרת לנו לבצע פעולות שונות. indexAction היא action דיפולטיבי שמתרחש בכל controller ברגע שנכנסים ל-index שלו.

על מנת להבהיר מה הולך פה, אני רוצה שתכניסו את השורה הבאה ל:indexAction:


$this->view->assign('title', 'Hello, World!');

מה שזה עושה זה להכניס משתנה בשם title אל ה-view ולתת לו ערך בשם Hello World. בואו ונשתמש במשתנה הזה ב-view! נכנס לתיקית views/scripts/index ונבחר את index.phtml. חדי העין מביניכם יראו שזה בדיוק העיצוב של המסך שראינו בהתחלה! כל מה שעלינו לעשות זה להכניס את השורה הזו בין תגיות ה-h1:


< ?php echo $this->escape($this->title); ?>

ואז מה שנראה זה:
שלום עולם בזנד פריימוורק

בעצם ראינו שיש כאן שלושה דברים:

1. קונטרולר בשם index.
2. לפחות action אחד לכל קונטרולר כאשר ה-action הדיפולטיבי נקרא indexAction
3. view שמציג את הכל.

במאמר הבא נחדד את נושא הקונטרולרים וה-actions בזנד פריימוורק ואף ננסה ליצור אחד.

פוסטים נוספים שכדאי לקרוא

פתרונות ומאמרים על פיתוח אינטרנט

המנעו מהעלאת source control לשרת פומבי

לא תאמינו כמה אתרים מעלים את ה-source control שלהם לשרת. ככה תמצאו אותם וגם הסבר למה זה רעיון רע.

בינה מלאכותית

להריץ ממשק של open-webui על הרספברי פיי

להפעיל ממשק של צ׳אט ג׳יפיטי שאפשר לגשת אליו מכל מחשב ברשת הביתית על רספברי פיי עם מודל בשם tinydolphin שרץ על רספברי פיי.

גלילה לראש העמוד