• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
اعجاز جالب متدهای جادویی ، مقدار دهی به پروپرتی و اعمال خودکار یک تابع
#1
شاید براتون جالب باشه که بتونید با مقدار دادن به یک پروپرتی خاص ، در صورتیکه یک متد دقیقا هم اسمش در داخل کلاس اصلی وجود داشته باشد بصورت خودکار اعمال شود .
کاربردش کجاست؟ به طور مثال لازم هست وقتی پسوردی ست میشود هش شود ، خب چه بهتر که بصورت خودکار با مقداردهی پروپرتی password ، مقدار هش آن جایگزین شود .
به مثال زیر دقت کنید گویای همه چیز هست Smile
کد پی‌اچ‌پی:
//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-prope...ethod.html
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط : undefined molana M.J hamid_80386
#2
این یکی از معمول ترین کاربردهای متدهای جادوییه. به خاطر همین چیزهاس که اسم جادویی رو روشون گذاشتن. عنوان تاپیک طوریه که آدم فکر می کنه نوعی شعبده بازی قراره تو تاپیک اتفاق بیفته.
  پاسخ
تشکر شده توسط : Reza
#3
رضااااا؟؟!!!Dodgy
تلفیق مثبت ستر با call_user_func میگفتی بهتر بود داداشم کهBig Grin
نکن برادر من ما ز یاران چشم یاری داریم:دی
هرچند میدونم که این جنبه اموزشی داره واسه ما مبتدی ها
دستت درد نکنه
اگه کفشت پاتو می زد و از ترس قضاوت مردم پابرهنه نشدی و درد رو به پات تحمیل کردی دیگه در مورد آزادی شعار نده !
آلبر کامو
  پاسخ
تشکر شده توسط : Reza molana
#4
جون تو این خطو نیگا چقدر باحاله
کد پی‌اچ‌پی:
$obj->password 'maypass';
echo 
$obj->password// show: 2ec1fa252604526dc817c1464e0343b0 

Big Grin
من که کلی کیف میکنم Rolleyes
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط : molana M.J hidensoft
#5
ممنون از کدی که گذاشتید. راهنمایی خوبی بود.Rolleyes
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان