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

سربارگذاری متدها (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 تعداد پارامترهای متفاوتی به آن ارسال کنیم.