rezaonline.net
دوشنبه 28 بهمن 1392, 00: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
کاربردش کجاست؟ به طور مثال لازم هست وقتی پسوردی ست میشود هش شود ، خب چه بهتر که بصورت خودکار با مقداردهی پروپرتی 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