2016-09-05 11 views
-3

Wie kann ich in PHP eine Klasse Foo definieren, die so etwas wie zu tun erlaubt:Definieren Sie eine Klasse Funktion Operator

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

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

+3

Beginnen Sie mit dem Lesen der [PHP Docs] (http://www.php.net/manual/en/ language.oop5.magic.php) aber was erwarten Sie '$ foo-> bar' und' $ foo() 'eigentlich? –

+2

Ich sehe nichts falsch mit dem Code, vorausgesetzt, 'Foo' hat eine' _invoke' Methode. –

Antwort

1

Sie fragen über aufrufbare Objekte oder Behandlung von Objekten als Funktionen. Um der Lage sein, das zu tun, müssen Sie __invoke() Verfahren implementieren, wie folgt aus:

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

Lesen Sie mehr:

Sie können aber auch $foo->bar; so oft nennen, wie Sie wollen, wie Sie schreiben können : $a = 5; $a; - aber es wird keine Wirkung haben. Es ist nur ein Feld. Wenn es aufrufbar ist, müssen Sie Klammern hinzufügen, um es aufzurufen.

Verwandte Themen