2016-05-19 7 views
1

ここではstdClassオブジェクトの下で関数を定義しようとしました。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; 

しかし、それは言う:致命的なエラー:未定義のメソッドはstdClassに呼び出し:: X()

+1

なぜあなたはこれを行うにはアリですか? –

+0

テスト用です –

+0

何をテストしますか? –

答えて

1

これはあなたが得ることができる最も近い:

$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 

あなたが使用する必要はありません。 php7でcall_user_func。

+0

call_user_func()が使われている理由を示す答えを更新しました。 – timhysniu

関連する問題