Menu
Coddy logo textTech

סיכום – פרויקט מאורגן

חלק מהיחידה תכנות מונחה עצמים במסלול ה-PHP של Coddy. שיעור 14 מתוך 91.

challenge icon

אתגר

קל

בואו נבנה יישום בלוג מלא עם ארגון מסודר של מרחבי שמות, ונשלב בו את כל מה שלמדת על מרחבי שמות, מילת המפתח 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: הדפיסו את התוצאה של פרסום הפוסט
?>

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר PHP אונליין