Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: ООП методы __get и __set

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
AndreyT
Отправлено: 11 Мая, 2010 - 22:30:44
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




читаю книгу по PHP главу ООП и хочу запустить пример кода а не работает почему то
вот код

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. class my_class{
  4.         public $name;
  5.        
  6.         public function __get($name_attr){
  7.                 echo $this->$name_attr;
  8.         }
  9.         public function __set($name_attr, $val){
  10.                 $this->$name_attr = $val;
  11.         }
  12. }
  13.  
  14. $man = new my_class();
  15. $man->name = "Андрей";
  16. $man->name;
  17. ?>
  18.  


по идеи этот код $man->name; должен вызывать функцию __get
 
 Top
Мелкий Супермодератор
Отправлено: 11 Мая, 2010 - 23:16:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




$name должен быть объявлен private, тогда работает.


-----
PostgreSQL DBA
 
 Top
AndreyT
Отправлено: 11 Мая, 2010 - 23:47:40
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Мелкий пишет:
$name должен быть объявлен private, тогда работает.

спасибо в книге про это не пишет, а почему не работает с public
 
 Top
JustUserR
Отправлено: 12 Мая, 2010 - 10:08:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




AndreyT пишет:
Спасибо в книге про это не пишет, а почему не работает с public
Скорее всего потому что переменная обрабатываемая через __get/__set или не должна существовать или не должна быть доступна снаружи - иначе происходит простое обращение к определенному свойству экземпляра класса


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
sireja
Отправлено: 09 Июня, 2013 - 08:32:21
Post Id


Новичок


Покинул форум
Сообщений всего: 39
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)

[+]


Переменная name должна быть массивом


Отредактировано модератором: Саныч, 09 Июня, 2013 - 10:57:34
Во-первых: поднимать темы старше года от последнего ответа плохо - пункт правил 1.16.
Во-вторых: поднимать их идиотскими ответами вобще недопустимо!

На первый раз предупреждение.
 
 Top
LIME
Отправлено: 09 Июня, 2013 - 10:45:23
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)





предлагаю посту выше дать приз "Ппц года!"
вернее "ппц 3х лет!"

Тема закрыта!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB