Constructor یا سازنده، تابع خاصی هست که همیشه public تعریف میشه و همنام کلاس هست یا از نام خاص construct__ برای اون استفاده میکنیم. وظیفه اصلی این تابع، مقداردهی اولیه به عناصر کلاس در زمان ایجاد شئ هست. این تابع میتونه دارای پارامتر ورودی باشه یا نباشه. اگه این تابع رو ننویسیم، یک سازنده پیشفرض برای کلاس درنظر گرفته میشه که متغیرهای عددی رو با صفر، متغیرهای منطقی رو با false و متغیرهای ارجاعی مثل رشته ها و اشیاء و... رو با null مقداردهی اولیه میکنه.
برای مثال به کد زیر دقت کنید:
class Point {
private $x;
private $y;
public function __construct() {
$this->x = 0;
$this->y = 0;
}
public function Point($x, $y) {
$this->x = $x;
$this->y = $y;
}
public function Set($x, $y) {
$this->Point($x, $y);
}
public function Display() {
echo 'X: '.$x.' - Y: '.$y;
}
}
توی کد فوق، همونطور که میبینید تو سازنده برای کلاس Point داریم که یکی دارای پارامتر ورودی هست و یکی دیگه، پارامتر ورودی نمیگیره. به اسم توابع سازنده هم دقت کنید. حالا برای ایجاد شئ از کلاس Point و مقداردهی به عناصر اون، دو راه دارین:
$p1 = new Point();
$p1->Set(5, 7);
$p1->Display();
$p2 = new Point(3, 4);
$p2->Display();
همونطور که میبینید، راه دوم راحتتر هست. ضمناً اگه دقت کنید، تابع Set با فراخوانی تابع سازنده، میتونه وظیفه مقداردهی رو به اون محول کنه. البته این روش فقط وقتی جواب میده که از اسم کلاس برای تابع سازنده استفاده کنیم یا به عبارت دیگه، تابعی که صدا میزنیم، اسم داشته باشه و از اسامی خاص مثل construct__ و... استفاده نکرده باشیم.
موفق باشید.