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
ها و نحوه استفاده از آنها در کلاس ها صحبت خواهیم کرد.