По работе __get

zek24

Мой дом здесь!
Команда форума
Модератор
Регистрация
14 Ноя 2009
Сообщения
811
Реакции
310
  • Автор темы
  • Модер.
  • #1
привет,
в процессе изучения ооп пхп возникла ситуация для меня непонятная
вот код
PHP:
class Get_Set{
  private $name = "anton";
  function __get($name){
  $met = "get".$name;
  if(method_exists($this, $met)){
  echo $met."<hr>";
  return $this->$met();  
  }else{
  echo "свойство $name не найдено!";
  }
  }
  function getname(){
  echo $this->$name.'33';
  }
}
$gettt = new Get_Set;
echo $gettt->name."<hr>";
Сразу ряд вопросов:
1. почему при попытке доступа к приватному свойству не отобразилась ошибка?
2. если мы попадаем в echo $this->$name.'33'; то выводится только 33 без anton?
3. почему мы попадаем в echo "свойство $name не найдено!"; если метод getname существует?
 
Сразу ряд вопросов:
1. почему при попытке доступа к приватному свойству не отобразилась ошибка?
2. если мы попадаем в echo $this->$name.'33'; то выводится только 33 без anton?
3. почему мы попадаем в echo "свойство $name не найдено!"; если метод getname существует?

2. Нужно обращаться без "$": echo $this->name.'33';
 
  • Автор темы
  • Модер.
  • #3
да, копипаст подвел)) теперь все логично, но почему срабатывал пункт 3 непонятно.
сделай var_dump($name); и посмотри исходник, если запускаешь из браузера, сразу после объявления функции function __get($name) - думаю тебя ждёт сюрприз относительно того, какое именно имя свойства ты передал объекту...
 
у тебя getname ничего не возвращает, а делает echo
замени на
Код:
return $this->name...
 
Назад
Сверху