کیوردهای self و static و مفهوم Late Static Binding در PHP

کیوردهای self و static و مفهوم Late Static Binding در PHP


امروز اومدم واستون مفهوم این دو تا رو توضیح بدم واستون در زبان PHP که یکی از زبان های محبوب منه .واسه هر کسی میخاد داخل شی گرایی قوی بشه باید با این دو تا مفهوم اشنا بشه و یکی از مزیت های OOP میتونیم اسمشو بذارید خب بریم سر اصل مطلب پس باید بریم باز سراغ کد 😄class Shape
{
public function getNameClass()
{
echo self::class;
}
}

class Circle extends Shape{

}

class Square extends Shape{

}

$c=new Circle();
$s=new Square();
$shape=new Shape();

$shape->getNameClass();
$s->getNameClass();
$c->getNameClass();من یک کلاس درست کردم به اسم Shape و یک متد تعریف کردم به اسم getNameClass که وظیفه اش اینه که بیاد اسم کلاس رو برگردونه کلاس Shape پدر Circle و Square هستش وقتی ما از Circle و Square شی میسازیم چون که self به کلاس اشاره دارد . اسم کلاس جایی رو میگه که داخلش self::class نوشتیم رو بهمون میده پس انتظارمون غلطه چون ما میخاستیم اسم کلاس Square و Circle بهمون بده همون طور احتمالا حدس زده باشید باید از keyword static استفاده کنیم چرا چون که keyword static میاد چک میکنه Object که درست کردیم از کلاس میبینه کلاسی که اون Object ازش صدا زدیم کیه و به اون اشاره داره نه جایی که تعریفش کردیم .پس میایم کد بالا رو اصلاح میکنیم 😄

class Shape
{
public function getNameClass()
{
echo static::class;
}
}

class Circle extends Shape{

}

class Square extends Shape{

}

$c=new Circle();
$s=new Square();
$shape=new Shape();

$shape->getNameClass();
$s->getNameClass();
$c->getNameClass();الان خروجی که میخایم بهمون میده یعنی متد getClassName میاد و اسم اون class رو بر میگردونه که ازش Object ساختیم اینم مفهموم رو بهش میگن 🙂 Late Static Binding از لحاظ کامپایلری این مفهموم میاد یک تاخیری میندازه تو روند اجرا و صبر میکنه تا اینکه ببینه کدوم Object از کدوم کلاس صدا زده شده تا اسم اون کلاس رو بهمون برگردونه .امیدوارم از این مطلب خوشتون اومده باشه 😎

منبع

Author: admin

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

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