2016-09-05 6 views
-3

Как я могу определить в PHP класс Foo, что позволяет сделать что-то вроде:Определение класса функций оператора

$foo = new Foo(); 
$foo->bar; 
$foo(); 
+1

http://stackoverflow.com/documentation/php/504/classes-and-objects#t=201609051452012077782 – Phiter

+3

Начните читать [Документы PHP] (http://www.php.net/manual/en/ language.oop5.magic.php), но что вы ожидаете от '$ foo-> bar' и' $ foo() 'на самом деле? –

+2

Я не вижу ничего плохого в коде, предполагая, что 'Foo' имеет метод' __invoke'. –

ответ

1

Вы спрашиваете о invokable объектов или лечения объектов как функции. Для того, чтобы быть в состоянии сделать это, вам нужно реализовать __invoke() метод, например:

class Foo { 
    public function __invoke() 
    { 
     echo 'invoke!'; 
    } 
} 

Подробнее:

Кроме того, вы можете позвонить $foo->bar; столько раз, сколько вы хотите, как вы можете написать : $a = 5; $a; - но это не будет иметь никакого эффекта. Это просто поле. Если это вызов, вам нужно будет добавить круглые скобки для его вызова.

Смежные вопросы