2016-05-19 31 views
1

definieren Hier habe ich versucht, eine Funktion unter stdClass Objekt zu definieren.Ist es möglich, Funktionen unter stdClass

<?php 
$x= function($name){return "Hello ".$name;}; 

echo $x("Sun"); 

$hey = (object)[ "x" => function($name){return "Hello ".$name;}, "y" =>"Hello Venus"]; 

echo $hey->x("Mercury"); 
echo $hey->y; 

Aber es sagt: Fatal error: Call to undefined Methode stdClass :: x()

+1

Warum in aller Welt würden Sie dies tun? –

+0

Nur zum Testen –

+0

Testen was ??? –

Antwort

1

Dies ist in der Nähe können Sie erhalten:

$x = function ($name) { return 'hello ' . $name; }; 
$obj = new stdClass(); 
$obj->x = $x; 

echo call_user_func($obj->x, 'john'); // this will work 
echo $obj->x('john');     // this will not work 

Sie nicht verwenden müssen call_user_func mit php7 obwohl.

+0

Ich habe die Antwort aktualisiert, um zu zeigen, warum call_user_func() verwendet wird. – timhysniu