آموزش شی گرایی در php و متدهای جادویی

علیرضا حاتمی نیا 2072

در جلسه قبل از آموزش شی گرایی در php  با نحوه تعریف متد در کلاس آشنا شدیم. در این جلسه به آموزش متدهای جادویی در php که مربوط به شی گرایی در php است می پردازیم.

متدهای جادویی در php

در جلسه قبل آموختید که چه طور یک متد در کلاس مورد نظر بسازیم. یکی از قابلیت های خوب php امکان استفاده از متدهایی تحت عنوان magic method یا متدهای جادویی است. php جهت سهولت در ساخت و استفاده از اشیاء از کلاس ها چند متد با نام متدهای جادویی در اختیار برنامه نویسان قرار داده است که هر کدام از این متدها ویژگی های خاص خود را دارند و در برنامه نویسی به وفور از آن ها استفاده می شود. 
متدهای جادویی در php به صورت مستقیم صدا زده نمی شود بلکه بر اساس رویدادی به صورت خودکار توسط کلاس صدا زده می شوند.

متدهای جادویی در php عبارتند از:

__construct
__destruct
__call
__callStatic
__get
__set
__isset
__unset
__sleep
__wakeup
__toString
__invoke
__set_state
__clone

نکته: همانطور که مشاهده می کنید نام این متدها با دو علامت خط زیر دار ( __ )  شروع می شود.
نکته: نام های متدهایی که با علامت دو خط زیر دار ( __ ) توسط php نامگذاری شده اند رزو شده اند و شما نمی توانید از این نام ها برای ساخت متدهای خود استفاده کنید مگر بخواهید از ویژگی های جادویی آنها در کلاس های خود استفاده کنید.
نکته: معمولا قبل از متدهای جادویی public,private,protected نوشته نمی شود.
در ادامه به معرفی و تشریح مهمترین متدهای جادویی نام برده شده در php می پردازیم.

متد جادویی __construct()

یکی از متدهای جادویی متد __construct یا متد سازنده است. این متد هنگام ساخت یک نمونه شی از کلاس فراخوانی و اجرا می شود.

مثال متد جادویی __construct

class MyClass {
    function __construct()
    {
        echo "This is magic method";
    }
}
$obj = new MyClass;

خروجی کد بالا به شکل زیر می شود:

This is magic method

توجه داشته باشید هنگامی که که شی از کلاس MyClass ساخته شد متد __construct فراخوانی و اجرا شد.
حال به راحتی می توانید انواع پارامتراهای خود را به شی خود پاس دهید تا در متد __construct دریافت شود.

مثال ارجاع پارامتر به متد __construct

<?php

class MyClass {
    function __construct($data)
    {
        echo $data;
    }
}
$obj = new MyClass('constructor');

خروجی کد بالا به شکل زیر می شود:

constructor

line

متد جادویی __destruct()

متد __destruct یا متد مخرب به محض از بین رفتن تمام ارجاعات به شی یا فراخوانی توابع مخرب بصورت مستقیم یا هر پروسه پایان دهنده دیگر، فراخوانی و اجرا می شود.

مثال متد جادویی __destruct

class MyClass {
    function __construct($data)
    {
        echo $data;
        $this -> name = ' destruct';
    }
    function __destruct()
    {
        echo $this -> name;
    }
}

$obj = new MyClass('construct');

کد بالا به صورت زیر اجرا می شود:

construct desctruct

line

متد جادویی __toString()

هنگامی که در برنامه با یک شی ساخته شده در کلاس مانند یک رشته رفتار کنید، php در کلاس به دنبال متد __toString میگردد و آن را فراخوانی می کنند. مثلا در حالت عادی می دانیم که نمی توان یک کلاس را چاپ کرد.

مثال متد جادویی __toString

class MyClass {
    function __toString()
    {
        return 'This is a string convert by toString';
    }
}

$obj = new MyClass();
echo $obj;

خروجی کد بالا به صورت زیر می شود:

This is a string convert by toString

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

 

 

کلمات کلیدی

لینک های مرتبط

طراحی سایت اصفهان
علیرضا حاتمی نیا
طراح و برنامه نویس وب
طراحی وبسایت های واکنش گرا
طراحی و پیاده سازی سیستم مدیریت محتوا
سئو و بهینه سازی سایت