آموزش متد جادویی set__
- توسط : علی حسین شهابی
- 0 نظر
با سلام
مبحث امروز ما درباره متد جادویی 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 برای بقیه متدهای جادویی بخش های بعدی و قبلی را دنبال نمایید.