وبلاگ میثم پاسداری هریس

۱ مطلب با کلمه‌ی کلیدی «overloading constructors in PHP» ثبت شده است

  • ۰
  • ۰

PHP درست است که سعی کرده است از برنامه نویسی شی گرا پشتیبانی کند اما نتوانسته است به طور کامل قوانین برنامه نویسی شی گرا را پیاده کند.

Overloading توابع و سازنده کلاس ها یک مثال از این کمبود ها در PHP هست.

اما برای اینکه بتوان در PHP این کمبود را جبران کرد تکنیک جالبی وجود که در ادامه به همراه کد توضیح اش آورده شده است.

class User {
public $Username;
function __construct(){
$argv=func_get_args();
switch(func_num_args()){
case 0:
self::__construct1();
break;
case 1:
self::__construct2($argv[0]);
break;
}
}
function __construct1(){
//initialization
}
function __construct2($username){
//do something like assign a value
$this->Username=$username;
}
}

تکه کد بالا کلاس User را نشان می دهد.

برای اینکه این کلاس بیشتر از 2 تابع سازنده داشته باشد، از دو تابع

()func_get_args برای گرفتن پارامتر هایی که به شی از نوع کلاس User در حین فراخوانی پاس داده می شوند و

()func_num_args برای گرفتن تعداد پارامترهایی که پاس داده شده اند،

استفاده می کنیم.

بنابراین به راحتی می توان متناسب با تعداد پارامتر ها توابعی را تعریف کرد.

در مثال بالا اگر دقت کنید تابع construct1() هیچ پارامتری را نمی پذیرد و همان سازنده پی فرض است و

در تابع construct2() اگر دقت کنید یک پارامتر را به عنوان ورودی تابع در نظر می گیرد.

  • میثم پاسداری