סקירת הספר: Laravel design patterns and best practices
בחרתי לקרוא את הספרון Laravel design patterns and best practices (קצת יותר מ-100 ע"מ) בגלל השילוב בין תחומים כל-כך חשובים למפתח PHP מודרני: Laravel , מצד אחד ו- design patterns , מצד שני. לרוול, למי שעדיין לא מכיר, הוא פריימוורק PHP מודרני, בדומה ל -code igniter, zend framework ו-cake php, הוותיקים יותר. ב- design patterns נתקלים בד"כ כשמתחילים לשאול שאלות כדוגמת כיצד ניתן לשפר את הקוד כדי שיהיה קריא יותר, ונוח יותר לשינויים ולהרחבה? או האם יש שיטה מבוססת ובדוקה לכתוב את הקוד?
השילוב בין לרוול ו-design patterns הוא מהותי להבנה של לרוול, מפני שלרוול מבוסס על יישום של design patterns.
בראש ובראשונה, לרוול מיישם את דפוס ה- MVC, שהוא הדפוס החשוב ביותר למפתחי PHP, בזכות העובדה שהוא מאלץ את המפתחים להתאפק מלערבב את הלוגיקה בתוך התצוגה. יישום מלא של הדפוס בלרוול, גורם להפרדת האפליקציה לשלוש שכבות : מודל, שאחראי לאינטראקציה עם מסד הנתונים, View שמציג את המידע למשתמשים, ושכבת קונטרולר דומיננטית שמקשרת בין שתי השכבות האחרות.
דוגמה בולטת לשימוש ב-design patterns בלרוול, הוא השימוש הנרחב ב-Facades בכל האפליקציות שמרכיבות את הפריימוורק. ה-Facade, מסתיר הרבה מהקוד מאחורי מתודות שנראות פשוטות, ועושות הרבה מהעבודה בלי להטריח את המתכנת. לדוגמה, אם אנחנו רוצים למשוך את תוכנו של session, אנחנו רק צריכים לכתוב פקודה קומפקטית, שנראית כמו מתודה סטטית:
$foo = Session::get('foo');
בעוד למעשה, לרוול עושה בשבילנו את כל העבודה מאחורי הקלעים, ובכלל כך: יוצר את מופע המחלקה, מזריק תלויות בסיוע IoC container, וקורא למתודות באופן קל לזכירה וליישום, וזה רק חלק ממה שהוא עושה.
הספר מכיל 6 פרקים, שמסבירים את היישום של design patterns בלרוול:
הפרק הראשון מסביר מהם design patterns, וסוקר את הקבוצות השונות של design patterns תוך אבחנה בין דפוסים יוצרים (Creational patterns), דפוסים מבניים (Structural) ודפוסים התנהגותיים (Behavioral).
שלושת הפרקים הבאים מוקדשים ליישום דפוס ה- MVC בלרוול, פרק לכל שכבה. במודל, שהוא החלק שמטפל במסד הנתונים, מוסבר כיצד ניתן לכתוב שאילתות רגילות באמצעות ה-query builder, או עדיף באמצעות ה-ORM של לרוול ששמו Eloquent, שמבצע אינטגרציה חלקה של מסד הנתונים עם המודלים שמטפלים בו (מודל לכל טבלה, יחסים בין הטבלאות השונות, ו-version control, וזה רק חלק קטן מהיופי שארוז בשכבת המודל בלרוול). הפרק על שכבת ה-view מרחיב מסביר את מבנה קבצי התבנית ועל מנוע התבנית (template engine), שיכול לשמש לכתיבת ה-HTML. ולבסוף, הפרק אודות ה-controller, מסביר על השכבה שקושרת את כל האפליקציה, ובין השאר אחראית על קבלת הבקשות מה-url, וניתובם למתודות שמטפלות בהם.
שני הפרקים האחרונים מסבירים, ובעיקר מציגים דוגמאות קוד, שעליהם מבוססת ליבת הפריימוורק, שנכתבה ברובה על ידי פיטר אוטוול, האיש שכותב את הפריימוורק. ולקינוח, הדגמה כיצד ניתן לכתוב ולשלב קוד מבוסס design patterns באתר לרוול.
הספר די מתקדם ומאוד טכני, ולכן, רצוי להגיע אליו רק לאחר היכרות טובה עם design patterns ולרוול, וגם אז רצוי להיעזר בו במקביל למקורות אחרים.
Kılıçdağı, A & Yilmaz, HI 2014, Laravel design patterns and best practices, Packt, Birmingham, Mumbai.
קישור לספר:
אהבתם? לא אהבתם? דרגו!
0 הצבעות, ממוצע 0 מתוך 5 כוכבים
המדריכים באתר עוסקים בנושאי תכנות ופיתוח אישי. הקוד שמוצג משמש להדגמה ולצרכי לימוד. התוכן והקוד המוצגים באתר נבדקו בקפידה ונמצאו תקינים. אבל ייתכן ששימוש במערכות שונות, דוגמת דפדפן או מערכת הפעלה שונה ולאור השינויים הטכנולוגיים התכופים בעולם שבו אנו חיים יגרום לתוצאות שונות מהמצופה. בכל מקרה, אין בעל האתר נושא באחריות לכל שיבוש או שימוש לא אחראי בתכנים הלימודיים באתר.
למרות האמור לעיל, ומתוך רצון טוב, אם נתקלת בקשיים ביישום הקוד באתר מפאת מה שנראה לך כשגיאה או כחוסר עקביות נא להשאיר תגובה עם פירוט הבעיה באזור התגובות בתחתית המדריכים. זה יכול לעזור למשתמשים אחרים שנתקלו באותה בעיה ואם אני רואה שהבעיה עקרונית אני עשוי לערוך התאמה במדריך או להסיר אותו כדי להימנע מהטעיית הציבור.
שימו לב! הסקריפטים במדריכים מיועדים למטרות לימוד בלבד. כשאתם עובדים על הפרויקטים שלכם אתם צריכים להשתמש בספריות וסביבות פיתוח מוכחות, מהירות ובטוחות.
המשתמש באתר צריך להיות מודע לכך שאם וכאשר הוא מפתח קוד בשביל פרויקט הוא חייב לשים לב ולהשתמש בסביבת הפיתוח המתאימה ביותר, הבטוחה ביותר, היעילה ביותר וכמובן שהוא צריך לבדוק את הקוד בהיבטים של יעילות ואבטחה. מי אמר שלהיות מפתח זו עבודה קלה ?
השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.