php

جلسه ۵۲: کلاس ها و ارث بری قسمت ۳ در php

self و this$

در این بخش در مورد نحوه استفاده از this$ و self برای دسترسی به اعضای کلاس ها صحبت خواهیم کرد. سرفصل مباحث این جلسه به شرح زیر می باشد:
  • this$
    • عملگر شی
  • self
    • محدوده عملگر
  • this و self
  • مثال

this$

متغیر ساختگی this$ باتوجه به نمونه ای از کلاس، به عضوی از کلاس اشاره دارد. این باعث ارجاع به شی فراخواننده می شود یعنی ارجاع به متد یا ویژگی های کلاسی که به آن اشاره شده است. توجه داشته باشید که عضو کلاس نباید ثابت باشد.

عملگر شی

علامت -> یک constructor داخلی در PHP است که با استفاده از کلمه کلیدی this$ می توانیم به متد ها و ویژگی های آن دسترسی داشته باشیم.

self

در PHP مانند بسیاری از زبان های دیگر، کلمه کلیدی self به متد ها و ویژگی های درون کلاس اشاره دارد. این متغیر ساختگی شبه ارجاعی به شی فراخواننده یعنی همان شی ای که متد یا خاصیت به آن تعلق دارد ارائه می دهد.

محدوده عملگر

علامت :: را به عنوان عملگر تفکیک پذیری شناخته می شود، یک constructor داخلی PHP است که برای دسترسی به متدها و ویژگی های موجود استفاده می شود. این علامت در کنار کلمه کلیدی self ساتفاده می شود.

this و self

  • از this$->member برای دسترسی به اعضای غیر ثابت (متدها و ویژگی ها) استفاده کنید.
  • از self::$member برای دسترسی به اعضای ثابت (static) متدها و ویژگی ها استفاده کنید.

مثال

برای درک بهتر نحوه استفاده this$ و self در PHP، قطعه کد زیر را اجرا کنید:
<?php
class Circle
{
    // properties
    public $radius= 0; //declaring public member
    public static $pi=3.14;  //declaring a public static member
    
    // Method to get the Circumference
    public function getCircumference(){
        return (2 * self::$pi * $this->radius );
    }
    
    // Method to get the area
    public function getArea(){
        return ($this->radius * $this->radius*self::$pi);
    }
  
    // Method to get the diameter
    public function getDiameter(){
        return ($this->radius * 2);
    }
}

// Create a new Circle class object
$obj = new Circle;

 
// Set object properties values
$obj->radius = 4;

 
// Read the object properties values again to show the change
echo "Radius is ". $obj->radius . "\n"; 
echo "Diamater is ". $obj->getDiameter() . "\n"; 
 
 
// Call the object methods
echo "Circumference is ". $obj->getCircumference(),"\n";
echo "Area is " .$obj->getArea()."\n"; 
echo "Value of pi is " .$obj::$pi;
?>
همانطور که در قطعه کد بالا مشاهده کردید، زمانی که می خواهیم به اعضای غیر ثابت مانند radius دسترسی پیدا کنیبم از this$ و <- استفاده می کنیم و زمانی که می خواهیم به اعضای ثابت عضو مانند pi دسترسی پیدا کنیم، از self و :: استفاده می کنیم. در بخش بعدی در مورد constructor ها و destructor ها و نحوه استفاده از آنها در کلاس ها صحبت خواهیم کرد.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا