المنشئ (__construct)
جزء من قسم Object Oriented Programming في رحلة PHP على Coddy — الدرس 7 من 91.
طريقة __construct هي طريقة خاصة تعمل تلقائياً عند إنشاء كائن جديد. تقوم بتهيئة خصائص الكائن.
إليك مثال على فئة (class) مع دالة بناء (constructor):
<?php
class Dog {
public $name;
public $breed;
public function __construct($name, $breed) {
$this->name = $name;
$this->breed = $breed;
}
}تأخذ الدالة __construct معاملات وتقوم بتعيينها للخصائص باستخدام $this.
قم بإنشاء كائنات باستخدام المنشئ (constructor):
$rex = new Dog("Rex", "German Shepherd");
$buddy = new Dog("Buddy", "Golden Retriever");عندما تستدعي new Dog("Rex", "German Shepherd")، يقوم PHP تلقائياً باستدعاء __construct ويمرر الوسائط.
الوصول إلى الخصائص التي تم تعيينها بواسطة المنشئ (constructor):
echo $rex->name . "\n";
echo $rex->breed . "\n";
echo $buddy->name . "\n";
echo $buddy->breed . "\n";المخرجات:
Rex
German Shepherd
Buddy
Golden Retrieverيمكنك أيضاً الحصول على دالة بناء (constructor) بقيم افتراضية للمعاملات:
class Cat {
public $name;
public $age;
public function __construct($name, $age = 1) {
$this->name = $name;
$this->age = $age;
}
}
$fluffy = new Cat("Fluffy", 3);
$whiskers = new Cat("Whiskers"); // age defaults to 1
echo $fluffy->name . " is " . $fluffy->age . " years old\n";
echo $whiskers->name . " is " . $whiskers->age . " years old\n";المخرجات:
Fluffy is 3 years old
Whiskers is 1 years oldنقطة رئيسية: تضمن طريقة __construct أن كل كائن يتم إعداده بشكل صحيح ببياناته الأولية عند إنشائه. فهي توفر عليك عناء تعيين الخصائص يدويًا بعد إنشاء الكائن.
التحدي
سهللقد تم تزويدك بملفات PHP (book.php و driver.php) لتنفيذ نظام كتب.
مهمتك هي:
- أكمل فئة
Bookفيbook.phpباستخدام طريقة__constructالتي تقوم بتهيئة خصائص$titleو$authorو$pages - في
driver.php، قم باستيراد وإنشاء كائن كتاب لـ"Harry Potter"بواسطة"J.K. Rowling"مع400صفحة
اتبع تعليقات TODO في كل ملف.
ورقة مرجعية
التابع __construct هو تابع خاص يتم تشغيله تلقائياً عند إنشاء كائن جديد لتهيئة خصائصه.
تعريف منشئ (constructor) داخل فئة (class):
<?php
class Dog {
public $name;
public $breed;
public function __construct($name, $breed) {
$this->name = $name;
$this->breed = $breed;
}
}إنشاء كائنات باستخدام المنشئ:
$rex = new Dog("Rex", "German Shepherd");
$buddy = new Dog("Buddy", "Golden Retriever");الوصول إلى الخصائص التي تم تعيينها بواسطة المنشئ:
echo $rex->name; // Rex
echo $rex->breed; // German Shepherdيمكن أن يحتوي المنشئ على قيم افتراضية للمعاملات:
class Cat {
public $name;
public $age;
public function __construct($name, $age = 1) {
$this->name = $name;
$this->age = $age;
}
}
$fluffy = new Cat("Fluffy", 3);
$whiskers = new Cat("Whiskers"); // age defaults to 1جرّب بنفسك
<?php
require_once 'book.php';
// TODO: قم بإنشاء كائن Book باستخدام:
// العنوان: "Harry Potter"، المؤلف: "J.K. Rowling"، الصفحات: 400
$myBook = ?;
echo "'" . $myBook->title . "' by " . $myBook->author . ", " . $myBook->pages . " pages\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)