סיכום – פרויקט מאורגן
חלק מהיחידה תכנות מונחה עצמים במסלול ה-PHP של Coddy. שיעור 14 מתוך 91.
אתגר
קלבואו נבנה יישום בלוג מלא עם ארגון מסודר של מרחבי שמות, ונשלב בו את כל מה שלמדת על מרחבי שמות, מילת המפתח use וטעינה אוטומטית לפי PSR-4.
תיצור פרויקט מאורגן היטב הכולל חמישה קבצים, שמדגימים כיצד יישומי PHP אמיתיים מארגנים את הקוד שלהם:
src/Models/Author.php: הגדר מחלקה בשםAuthorבמרחב השמותBlog\Models. היא צריכה לכלול מאפייןpublic $name, בנאי שמקבל את השם ומגדיר אותו, ומתודה בשםgetBio()שמחזירה"Author: [name]".src/Models/Post.php: הגדר מחלקה בשםPostבמרחב השמותBlog\Models. היא צריכה לכלול את המאפייניםpublic $titleו-public $author(כאשר author הוא אובייקט מסוגAuthor). הבנאי מקבל כותרת ואובייקט מסוגAuthor, ומגדיר את שניהם. הוסף מתודה בשםgetSummary()שמחזירה"[title] by [author name]".src/Services/Publisher.php: הגדר מחלקה בשםPublisherבמרחב השמותBlog\Services. היא צריכה לכלול מתודה בשםpublish(Post $post)שמקבלת אובייקט מסוגPostומחזירה"Published: [post title]". תצטרך לייבא את המחלקהPostבאמצעות מילת המפתחuse, מכיוון שהיא נמצאת במרחב שמות אחר.vendor/autoload.php: צור טוען אוטומטי לפי PSR-4 באמצעותspl_autoload_register, שממפה את הקידומת של מרחב השמותBlog\לתיקייהsrc/. הטוען האוטומטי היחיד הזה מטפל בטעינה אוטומטית של כל המחלקות שלך.index.php: נקודת הכניסה שלך. טען את הטוען האוטומטי, ואז השתמש במילת המפתחuseכדי לייבא אתBlog\Models\Author, אתBlog\Models\PostואתBlog\Services\Publisher. צור אובייקטAuthorבשם"Jane Smith", אובייקטPostעם הכותרת"Getting Started with PHP"באמצעות אותו מחבר, ואובייקטPublisher. הדפס את הביוגרפיה של המחבר, את תקציר הפוסט ואת התוצאה של פרסום הפוסט (כל אחד בשורה נפרדת).
שים לב לכך ששירות Publisher תלוי במודל Post. כך מודגם כיצד מחלקות במרחבי שמות שונים יכולות לעבוד יחד באמצעות ייבוא הרכיבים הדרושים להן בעזרת הצהרות use.
נסו בעצמכם
<?php
// טענו את ה-autoloader
require_once 'vendor/autoload.php';
// TODO: ייבאו את המחלקות הנדרשות באמצעות פקודות 'use'
// - Blog\Models\Author
// - Blog\Models\Post
// - Blog\Services\Publisher
// TODO: צרו Author בשם "Jane Smith"
// TODO: צרו Post עם הכותרת "Getting Started with PHP" באמצעות אותו Author
// TODO: צרו Publisher
// TODO: הדפיסו את הביוגרפיה של המחבר
// TODO: הדפיסו את תקציר הפוסט
// TODO: הדפיסו את התוצאה של פרסום הפוסט
?>כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים (OOP)
קבצים חיצונייםמבוא ל-OOPמחלקות לעומת אובייקטיםמילת המפתח $thisמתודותמאפייניםבנאי (__construct)הורס (__destruct)חזרה: מחשבון פשוט4ירושה
ירושה בסיסיתמילת המפתח parent::דריסת מתודותמילת המפתח finalמחלקות מופשטותסיכום – היררכיית עובדים7כימוס
ציבורי, מוגן, פרטימפרטי גישה לעומקמתודות גישה ועדכוןהסתרת מידעקידום פרמטרים בבנאי (8.0)סיכום – מערכת רישומי תלמידים2מרחבי שמות וטעינה אוטומטית
מבוא למרחבי שמותמילת המפתח useתקן הטעינה האוטומטית PSR-4הטוען האוטומטי של Composerסיכום – פרויקט מאורגן5ממשקים וחוזים
מבוא לממשקיםמימוש ממשקיםמימוש של כמה ממשקיםממשק לעומת מחלקה מופשטתרמזי טיפוסים עם ממשקיםסיכום - מחשבון צורות8מתודות קסם
מבוא למתודות קסם__toString ו־__debugInfo__get, __set, __isset, __unset__call ו־__callStatic__clone ושיבוט אובייקטים__serialize ו־__unserializeסיכום – אוסף מותאם אישית3מאפייני מחלקה
מאפייני מופע לעומת מאפיינים סטטייםקבועים במחלקותמתודות ומאפיינים סטטייםמאפיינים פרטיים ומוגניםמאפיינים לקריאה בלבד (PHP 8.1)סיכום – מנהל חשבון בנק6פולימורפיזם
בחינה מחדש של דריסת מתודותפולימורפיזם באמצעות ממשקיםרמזי טיפוסים וטיפוסי איחודקישור סטטי מאוחרסיכום — מעבד תשלומיםתרגלו בעצמכם: קומפיילר PHP אונליין