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]   

> Описание: обращение к несуществующей функции переменной класса
reqyz
Отправлено: 06 Июня, 2016 - 10:02:35
Post Id


Новичок


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


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




Доброго времени суток.

предположим существует класс, к переменной которого можно обратиться так: $myClass->variar, и она будет возвращать какое то число, например 3, которое можно использовать для различных действий, складывать вычитать присваивать, выводить и т д,

Внимание вопрос: возможна ли в php реализация класса, такая, что можно было бы при этом вызывать функцию следующим способом $myClass->variar->getAll();
 
 Top
Мелкий Супермодератор
Отправлено: 06 Июня, 2016 - 12:00:46
Post Id



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


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


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




Это не несуществующая функция переменной класса, а метод объекта, ссылка на который сохранена в свойстве объекта.

Объект может вести себя при получении значения как строка с помощью метода __toString. Т.е. код валиден:
PHP:
скопировать код в буфер обмена
  1. class bar
  2. {
  3.     public function __toString()
  4.     {
  5.         return 'var';
  6.     }
  7.     public function getAll()
  8.     {
  9.         return 'anothervar';
  10.     }
  11. }
  12. $foo = new bar();
  13. echo $foo;
  14. $anotherVar = $foo . 'bar';
  15. echo $foo->getAll();

Но __toString - это только получение значения. Менять объект вы по-прежнему должны вызовами методов или манипулированием с его свойствами.
Как число - на данный момент нет.


-----
PostgreSQL DBA
 
 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