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

Image تحقیقات

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

با سلام

مبحث امروز ما درباره متد جادویی set__ در زبان آموزش php است . این متد زمانی فراخانی می شود که  بخواهیم مقداری را به پروپرتی ای (property ) اختصاص دهیم که یا اصلن وجود ندارد و یا به آن دسترسی نداریم .

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

 

متد set__ دو آرگمان دارد . اولی نام پروپرتی (property) مورد نظر و دومی مقداری که میخواهیم به آن اختصاص دهیم .

مثال :

class Car

{

private $vars = array() ;

function __set($name , $value)

{

$this->vars[$name] = $value ;

}

}

$car = new Car();

$car->wheel = 4 ;

$car ->color = 'red';

$car->name = 'BMW';

برای داشتن متغیرهای داینامیك بهترین راه استفاده از آرایه هاست. در كلاس Car یك آرایه با نام $vars ایجاد كردیم . دسترسی به آرایه $var به صورت Private تعریف شده یعنی در بیرون از كلاس به این آرایه دسترسی نداریم.سپس با متد __set متغیر $var رو مقدار دهی میكنیم.متد __set دو پارامتر میگیره.اولی نام كلید (key) و دومی مقدار (value) .

هنگامی كه شما از كد زیر استفاده میكنید :

$car->color = 'red';

در پشت صحنه انگار دارین از این کد استفاده می کنید :

$car->vars['color'] = 'red';

پس با استفاده از متد set__ به متغییرهایی که وجود ندارن یا دسترسی به آن ها نداریم مقدار دادیم و مقدارشون رو عوض کردیم .

حالا می توانید متد جادویی get__ هم در کلاس استفاده کنید برای دسترسی به این متغیرهایی که مقدار دهی کردین :

<?php
class Car {

	private $vars = array();

	function __set($name, $value) {

		$this->vars[$name] = $value;

	}

	public function __get($name) {

		if (isset($this->vars[$name])) {
			return $this->vars[$name];
		}

	}
}

$car = new Car();

$car->wheel = 4;
echo $car->wheel.'
';

$car->color = 'red';
echo $car->color.'
';

$car->name = 'BMW';
echo $car->name.'
';

خروجی کد بالا :

4
red
BMW

خب اینم  از متد __set برای بقیه متدهای جادویی بخش های بعدی و قبلی را دنبال نمایید.