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 :: Принцип работы анонимной функции в ооп???

 PHP.SU

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


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

> Без описания
Clerik
Отправлено: 22 Ноября, 2016 - 16:36:50
Post Id


Новичок


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2. class A{
  3.         public function error(){
  4.                 $a='b';
  5.                 return $this->$a();
  6.         }
  7.         public function b(){
  8.                 echo 'hi all';
  9.         }
  10. }
  11. $obj=new A;
  12. $obj->error();
  13.  

$this->$a(); стал анонимной функцией. Кто сможет объяснить, почему это произошло, желательно по порядку?
 
 Top
Мелкий Супермодератор
Отправлено: 22 Ноября, 2016 - 16:45:28
Post Id



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


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


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




Это не анонимная функция. Это подвид переменных переменных.
Вызов метода объекта $this, имя метода сохранено в переменной $a.


-----
PostgreSQL DBA
 
 Top
Clerik
Отправлено: 22 Ноября, 2016 - 17:01:05
Post Id


Новичок


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


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




Мелкий пишет:
Это не анонимная функция. Это подвид переменных переменных.
Вызов метода объекта $this, имя метода сохранено в переменной $a.


Что-то подобное этому?
PHP:
скопировать код в буфер обмена
  1.  
  2. function error($arr){
  3.         echo $arr;
  4. }
  5. $a=b;
  6. $$a='error';
  7. echo $b('hi');
  8.  


Разве $b не стала анонимной ф-ей?
 
 Top
Мелкий Супермодератор
Отправлено: 22 Ноября, 2016 - 17:06:28
Post Id



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


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


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




Да, именно это.
Нет, это не анонимная функция. Анонимная функция - это когда есть функция, но у неё нет имени.


-----
PostgreSQL DBA
 
 Top
Clerik
Отправлено: 22 Ноября, 2016 - 17:15:13
Post Id


Новичок


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


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




Мелкий пишет:
Да, именно это.
Нет, это не анонимная функция. Анонимная функция - это когда есть функция, но у неё нет имени.


Спасибо, просто в статье всё перемешали, вот я немного и запутался)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB