Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

ملخص - مشروع منظم

جزء من قسم Object Oriented Programming في رحلة PHP على Coddy — الدرس 14 من 91.

challenge icon

التحدي

سهل

لنقم ببناء تطبيق مدونة كامل مع تنظيم صحيح لمساحات الأسماء (namespaces)، لنجمع كل ما تعلمته حول مساحات الأسماء، والكلمة المفتاحية use، والتحميل التلقائي PSR-4.

ستقوم بإنشاء مشروع جيد التنظيم يتكون من خمسة ملفات توضح كيفية تنظيم تطبيقات PHP الحقيقية لأكوادها:

  • src/Models/Author.php — قم بتعريف فئة Author داخل مساحة الأسماء Blog\Models. يجب أن تحتوي على خاصية public $name، ومنشئ (constructor) يقبل الاسم ويقوم بتعيينه، وتابع 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 — قم بإنشاء محمل تلقائي (autoloader) بمعيار 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" باستخدام ذلك الكاتب

// TODO: إنشاء ناشر (Publisher)

// TODO: طباعة السيرة الذاتية للكاتب

// TODO: طباعة ملخص المنشور

// TODO: طباعة نتيجة نشر المنشور
?>

جميع دروس Object Oriented Programming