PDA

View Full Version : آموزش: اعجاز جالب متدهای جادویی ، مقدار دهی به پروپرتی و اعمال خودکار یک تابع



rezaonline.net
یک شنبه 27 بهمن 1392, 23:44 عصر
شاید براتون جالب باشه که بتونید با مقدار دادن به یک پروپرتی خاص ، در صورتیکه یک متد دقیقا هم اسمش در داخل کلاس اصلی وجود داشته باشد بصورت خودکار اعمال شود .
کاربردش کجاست؟ به طور مثال لازم هست وقتی پسوردی ست میشود هش شود ، خب چه بهتر که بصورت خودکار با مقداردهی پروپرتی password ، مقدار هش آن جایگزین شود .
به مثال زیر دقت کنید گویای همه چیز هست :)


//example class
class example
{
private $_var = array();


public function __set($key,$val)
{
if(method_exists($this,$key))
{
$this->_var[$key] = call_user_func_array(array($this,$key), array($val));
}
else
$this->_var[$key] = $val;
}

public function __get($key)
{
return isset($this->_var[$key])?$this->_var[$key]:null;
}


private function strtolower($x)
{
return strtolower($x);
}


private function password($pass)
{
return md5($pass);
}
}



//example
$obj = new example;
$obj->params1 = "EXAMPLE";
echo $obj->params1; // show: EXAMPLE

echo '<br>';
$obj->strtolower = 'REZA';
echo $obj->strtolower; // show : reza

echo "<br>";
$obj->password = 'maypass';
echo $obj->password; // show: 2ec1fa252604526dc817c1464e0343b0



لینک منبع :
http://www.rezaonline.net/blog/set-property-and-affected-method.html