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
Форумы портала PHP.SU :: Версия для печати :: Принцип работы анонимной функции в ооп???
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Принцип работы анонимной функции в ооп???

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

1. Clerik - 22 Ноября, 2016 - 16:36:50 - перейти к сообщению
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(); стал анонимной функцией. Кто сможет объяснить, почему это произошло, желательно по порядку?
2. Мелкий - 22 Ноября, 2016 - 16:45:28 - перейти к сообщению
Это не анонимная функция. Это подвид переменных переменных.
Вызов метода объекта $this, имя метода сохранено в переменной $a.
3. Clerik - 22 Ноября, 2016 - 17:01:05 - перейти к сообщению
Мелкий пишет:
Это не анонимная функция. Это подвид переменных переменных.
Вызов метода объекта $this, имя метода сохранено в переменной $a.


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


Разве $b не стала анонимной ф-ей?
4. Мелкий - 22 Ноября, 2016 - 17:06:28 - перейти к сообщению
Да, именно это.
Нет, это не анонимная функция. Анонимная функция - это когда есть функция, но у неё нет имени.
5. Clerik - 22 Ноября, 2016 - 17:15:13 - перейти к сообщению
Мелкий пишет:
Да, именно это.
Нет, это не анонимная функция. Анонимная функция - это когда есть функция, но у неё нет имени.


Спасибо, просто в статье всё перемешали, вот я немного и запутался)

 

Powered by ExBB FM 1.0 RC1