Classes مقابل Objects
جزء من قسم Object Oriented Programming في رحلة PHP على Coddy — الدرس 3 من 91.
تخدم الفئات (Classes) والكائنات (objects) أغراضاً مختلفة. الفئة هي مخطط، بينما الكائن هو ما تبنيه من ذلك المخطط.
إليك مثال على فئة (class) تحتوي على خصائص مصرح بها:
<?php
class Dog {
public $name;
public $breed;
}تعني الكلمة الأساسية public أنه يمكن الوصول إلى هذه الخصائص من خارج الفئة. سنتعلم المزيد عن public في درس الخصائص.
الآن قم بإنشاء كائنات من الفئة Dog:
$dog1 = new Dog();
$dog2 = new Dog();يمكن أن يكون للكائنات قيم فردية لخصائصها:
$dog1->name = "Nicky";
$dog1->breed = "Siberian Husky";
$dog2->name = "Teemon";
$dog2->breed = "Shu'ali";يُستخدم العامل -> للوصول إلى خصائص الكائن.
اطبع بيانات كل كائن:
echo $dog1->name . " is a " . $dog1->breed . "\n";
echo $dog2->name . " is a " . $dog2->breed . "\n";المخرجات:
Nicky is a Siberian Husky
Teemon is a Shu'aliالفرق الرئيسي: تُحدد الفئة Dog الهيكل الذي تشترك فيه جميع الكلاب، بينما تمثل الكائنات $dog1 و $dog2 كلاباً محددة وفردية بقيم خصائص فريدة.
التحدي
سهلأكمل الكود لإنشاء كائنين لطالبين من الفئة Student وتعيين خصائصهما.
student.php: يحتوي على الفئةStudent(مغلق)driver.php: إنشاء الكائنات وتعيين خصائصها
قم بتعيين القيم التالية:
$student1: الاسم هو"Alice"بدرجة"A"$student2: الاسم هو"Bob"بدرجة"B"
جرّب بنفسك
<?php
require_once 'student.php';
// TODO: إنشاء كائنين للطالب
// TODO: تعيين الخصائص للطالب 1 (الاسم: "Alice"، الدرجة: "A")
// TODO: تعيين الخصائص للطالب 2 (الاسم: "Bob"، الدرجة: "B")
// طباعة معلومات الطالب
echo $student1->name . " has grade " . $student1->grade . "\n";
echo $student2->name . " has grade " . $student2->grade . "\n";
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Object Oriented Programming
1أساسيات OOP
الملفات الخارجيةمقدمة في OOPClasses مقابل Objectsالكلمة المفتاحية $thisالـ Methodsالـ Propertiesالمنشئ (__construct)الهادم (__destruct)مراجعة - آلة حاسبة بسيطة4الوراثة
الوراثة الأساسيةالكلمة المفتاحية parent::إعادة تعريف الدوال (Method Overriding)الكلمة المفتاحية finalالأصناف المجردة (Abstract Classes)مراجعة - هيكلية الموظفين7التغليف (Encapsulation)
العام، المحمي، الخاص (Public, Protected, Private)نظرة متعمقة على معدلات الوصولدوال Getters و Settersإخفاء المعلوماتميزة Constructor Promotion (8.0)مراجعة - نظام سجلات الطلاب10مفاهيم البرمجة كائنية التوجه المتقدمة
التركيب مقابل الوراثةحقن التبعيةالأصناف المجهولةالتعدادات (PHP 8.1)الألياف (PHP 8.1)تعمق في استنساخ الكائناتالمولدات والمكررات13أنماط التصميم - الجزء الثاني
نمط الأمرنمط المحولنمط المزيننمط طريقة القالبنمط الحالةنمط التركيبنمط المستودع2مساحات الأسماء والتحميل التلقائي
مقدمة إلى مساحات الأسماءالكلمة المفتاحية useمعيار التحميل التلقائي PSR-4أداة التحميل التلقائي Composerملخص - مشروع منظم5الواجهات والعقود
مقدمة إلى الواجهاتتنفيذ الواجهاتتنفيذ واجهات متعددةالواجهة مقابل الـ Abstract Classالـ Type Hinting مع الواجهاتملخص - حاسبة الأشكال8الميثودات السحرية (Magic Methods)
مقدمة في الميثودات السحرية__toString و __debugInfo__get, __set, __isset, __unset__call و __callStatic__clone واستنساخ الكائنات__serialize و __unserializeمراجعة - Custom Collection3خصائص الكلاس
خصائص الـ Instance مقابل الخصائص الساكنة (Static)الثوابت في الكلاساتالدوال والخصائص الساكنة (Static)الخصائص الخاصة (Private) والمحمية (Protected)خصائص للقراءة فقط (Readonly) في PHP 8.1مراجعة - مدير الحساب البنكي6تعدد الأشكال (Polymorphism)
مراجعة إعادة تعريف الدوال (Method Overriding)تعدد الأشكال عبر الـ Interfacesتلميح النوع (Type Hinting) وأنواع الاتحاد (Union Types)الربط الاستاتيكي المتأخر (Late Static Binding)ملخص - معالج الدفع (Payment Processor)