Как я могу определить в PHP класс Foo
, что позволяет сделать что-то вроде:Определение класса функций оператора
$foo = new Foo();
$foo->bar;
$foo();
Как я могу определить в PHP класс Foo
, что позволяет сделать что-то вроде:Определение класса функций оператора
$foo = new Foo();
$foo->bar;
$foo();
Вы спрашиваете о invokable объектов или лечения объектов как функции. Для того, чтобы быть в состоянии сделать это, вам нужно реализовать __invoke()
метод, например:
class Foo {
public function __invoke()
{
echo 'invoke!';
}
}
Подробнее:
Кроме того, вы можете позвонить $foo->bar;
столько раз, сколько вы хотите, как вы можете написать : $a = 5; $a;
- но это не будет иметь никакого эффекта. Это просто поле. Если это вызов, вам нужно будет добавить круглые скобки для его вызова.
http://stackoverflow.com/documentation/php/504/classes-and-objects#t=201609051452012077782 – Phiter
Начните читать [Документы PHP] (http://www.php.net/manual/en/ language.oop5.magic.php), но что вы ожидаете от '$ foo-> bar' и' $ foo() 'на самом деле? –
Я не вижу ничего плохого в коде, предполагая, что 'Foo' имеет метод' __invoke'. –