سربارگذاری متدها

در درس های قبل با چگونگی ایجاد متدها آشنا شدید. در این درس می خواهیم شما را با یک مفهوم دیگر درباره متدها به نام سربارگذاری متدها (Method Overloading) آشنا کنیم. در PHP تعریف دو متد با نام یکسان که دارای تعداد پارامترهای متفاوتی باشند امکان پذیر نیست. به مثال زیر توجه کنید :

<?php
    function ShowMessage()
    {
        echo 'Hello World !';
    }
    function ShowMessage($string)
    {
        echo 'Hello '.$string;
    }

    ShowMessage();            
?>
( ! ) Fatal error: Cannot redeclare Person::showMessage() in C:\wamp\www\Tuts\index.php on line 11

با اجرای کد بالا با خطا مواجه می شوید، چون PHP نمی داند که شما کدام متد را فراخوانی کرده اید. در PHP توابعی وجود دارند که توسط توسعه دهندگان این زبان برای مقاصد خاصی تعریف شده اند و همراه با نصب PHP به صورت توکار وجود دارند. با این توابع، توابع از پیش تعریف شده (Predefined functions) می گویند. مثلا از برخی از این توابع برای به دست اوردن طول یک رشته، به دست آوردن تعداد عناصر موجود در یک آرایه ، کار با تاریخ و ساعت، کار با پوشه ها و فایل ها … استفاده می شود. قدرت PHP در همین توابع از پیش تعریف شده است و تعداد آنها در هر نسخه جدید از PHP تغییر کرده و بیشتر می شود. یکی از این متدها ، متد ()func_get_args است، که می توان با استفاده از آن یک متد با تعداد پارامترهای متفاوت ایجاد کرد :

 <?php
    function showMessage()
    {
        $string = func_get_args();
        foreach($string as $str)
        {
            echo 'Hello '.$str.'<br/>';
        }
    }

    showMessage('World!');
    showMessage('Jack','Smith','John');            
?>
Hello World!
Hello Jack
Hello Smith
Hello John

همانطور که در کد بالا مشاهده می کنید با استفاده از این متد توانستیم در هربار فراخوانی متد ShowMessage تعداد پارامترهای متفاوتی به آن ارسال کنیم.

لطفا اگر نظر، پیشنهاد و یا انتقادی در باره مطلب بالا دارید در قسمت زیر مطرح بفرمایید.