تعریف متدهای یک کلاس

در جلسات قبل در مورد ساخت توابع در php به طور کامل صحبت کردیم. به توابعی که به طور خاص در یک کلاس تعریف می شوند،متد (method) گفته می شود و تمامی کارهایی که یک نمونه شی انجام می دهد را داخل متدها تعریف می کنیم.

مثال:

برای کلاس myClass یک متد به نام setUsername تعریف می کنیم که در آن متغیر username را مقدار دهی می کند.

class myClass {
    public $username = 'hesam';
    public function setUserName($newUser) {
        return $this -> username = $newUser;
    }
}

نکته: توجه داشته باشید در بدنه متدها برای دسترسی به شی ساخته شده در خارج از کلاس بایستی از کلمه کلیدی $this استفاده کنیم. با این کار مقدار متغیر اشاره شده برابر با مقداری می شود که توسط شی ساخته شده تعیین شده باشد. به مثال زیر توجه کنید.

class myClass {
    public $username = 'hesam';
    public function setUserName($newUser) {
        return $this -> username = $newUser;
    }
}
$obj = new myClass;
echo $obj -> setUserName('danial');

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

danial

در مثال بالا می توانیم مقدار متغیر username را در تابع setUserName مقداردهی کنیم و در تابعی جدید با نام getUserName مقدار را return کنیم.

class myClass {
    public $username = 'hesam';
    public function setUserName($newUser) {
        return $this -> username = $newUser;
    }
    public function getUserName () {
        return $this -> username;
    }
}
$obj = new myClass;
$obj -> setUserName('danial');
echo $obj -> getUserName();

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

danial

می توانیم این مقدار دهی را توسط شی ساخته شده چندین بار انجام دهیم و مقدارهای جدید داشته باشیم:

<?php

class myClass {
    public $username = 'hesam';
    public function setUserName($newUser) {
        return $this -> username = $newUser;
    }
    public function getUserName () {
        return $this -> username . '<br>';
    }
}
$obj = new myClass;
$obj -> setUserName('danial');
echo $obj -> getUserName();

$obj -> setUserName('ahmadreza');
echo $obj -> getUserName();

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

danial
ahmadreza

 

آیا این پاسخ به شما کمک کرد؟ 26 کاربر این را مفید یافتند (26 نظرات)