За последние 24 часа нас посетили 54658 программистов и 1719 роботов. Сейчас ищут 2119 программистов ...

__get __set

Тема в разделе "Прочие вопросы по PHP", создана пользователем amir_Mirov, 21 июн 2015.

  1. amir_Mirov

    amir_Mirov Новичок

    С нами с:
    25 сен 2014
    Сообщения:
    90
    Симпатии:
    0
    Доброго времени суток ув форумчани.
    Добрался я до такой темы в php Магические методы
    и сразу код
    Код (PHP):
    1.     class a {
    2.                         private $_name;
    3.                         private $_age;
    4.                         
    5.                         function __set($n ,$v){
    6.                             switch($n){
    7.                                 case"name":
    8.                                     $this->_name=$v;
    9.                                 case"age":
    10.                                     $this->_age=$v;
    11.                                 default:
    12.                                     echo "ERROR";
    13.                             }
    14.                         function __get($n){
    15.                             switch($n){
    16.                                 case"name":
    17.                                     return $this->_name;
    18.                                 case"age":
    19.                                     return $this->_age;
    20.                                 default:
    21.                                     echo "ERROR";
    22.                             }    
    23.                         }        
    24.                     }
    25.                      echo $o->title; // даст ошибку
    26.  
    ув гуру у вас достаточно опыта чтобы ответить при каких случаях это понадобится ?
    я пологаю только в случай контроля кода! внесите ясности в мою голову.Спасибо
    а пока поиду читать http://php.ru/forum/viewtopic.php?f=2&t=53569

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    amir_Mirov, это методы перехватчики(магические методы) которые перехватывают сообщения посланные неопределенным (т.е. несуществующим) методам или свойствам.
    например метод __get($property) вызовится автоматически, неявно при обращении к неопределенному свойству.
     
  3. amir_Mirov

    amir_Mirov Новичок

    С нами с:
    25 сен 2014
    Сообщения:
    90
    Симпатии:
    0
    Спасибо за ответ. это я понял. но для чего это нужно контроль кода?
     
  4. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    amir_Mirov, это уже от тебя зависит, как ты определишь эти методы кто знает.
     
  5. amir_Mirov

    amir_Mirov Новичок

    С нами с:
    25 сен 2014
    Сообщения:
    90
    Симпатии:
    0
    сообщения - эти кто может слать? только кодер? .Т е я пишу код 1 и послать данные неизвестному свойству могу лиш по ошибке.
    получатся это средство для контроля кода?.
    Или какойто Юзер какимто способом может обратится к моему обьекту .
    т е вопрос: тут дело в безопастности или контроля кода?
     
  6. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Ну, можно использовать в моделях.
    Код (PHP):
    1. $user->name = 'name';
    2. $user->password = 'password';
    3.  
    Ты их перехватываешь и потом применяешь к запросу вставки / изменения, а на password ещё и кастуешь хэш.