آموزش متد جادویی get__

Image تحقیقات

آموزش متد جادویی get__

با سلام

متدجادویی که امروز دربارش صحبت میکنیم get__ است که در زبان آموزش php کاربردهای خاص خودش رو دارد .

متد جادویی get__ زمانی فراخوانی می شود که ما پروپرتی ای (property) را صدا بزنیم که در کلاس امون وجود ندارد و یا قابل دسترس نیست (به صورت private تعریف شده) .

اولین مثال رو مشاهده کنید :

<?php

class MyClass {

	public function __get($name) {
		return $name;

	}

}

$obj = new MyClass();
echo $obj->aliHossein;
  • در این مثال در خط 12 پروپرتی aliHossein از کلاس MyClass را صدا زدیم در حالی که این پروپرتی وجود ندارد . اگه از متد get__ استفاده نکنیم در کلاسمون خب پس با اروری مواجه می شویم که می گوید همچین پروپرتی موجود نیست.ولی اگر از متد get__ استفاده کنیم مانند بالا نام تابع رو برگشت دادیم .

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

مثال :

class Battery {
    private $charge = 0;

    public function  __get($name) {
        if(isset($this->$name)) {
            return $this->$name;
        }
        return null;
    }

 
    public function setCharge($charge) {
        $charge = (int)$charge;
        if($charge < 0) {
            $charge = 0;
        }
        elseif($charge > 100) {
            $charge = 100;
        }
        $this->charge = $charge;
    }
}

 

  • در مثال بابا با استفاده از متد get__ اگر کاربر پروپرتی ای وارد کرد که  حق دسترسی نداشته باشد به اون پروپرتی را برایش می فرستیم تا فقط بتواند بخواند نه این  که تغییری روی آن بتواند اعمال کند .
  • پارامتر $name در متد get__ در واقع همان نام پروپرتی ای است که کاربر مانند زیر وارد کرده است :
$obj= new Battery();
echo $obj->charge ;

در خط 6  که به صورت $this->$name نوشته شده صدا زدن داینامیک است که می توانید در اینجا مطالعه نمایید.

برای بقیه متدهای جادویی بخش های بعدی را مطالعه فرمایید .