私はテンプレートに表示されたときにようにすぐに、オブジェクトをモックする必要があります。インラインオブジェクトから無名関数(Closure)を呼び出す方法は?
$that->user->isAdmin()
それはtrue
を返します。
私はオブジェクトに匿名関数で配列をキャストしてみました:
$that = (object) ((array(
'user' =>
(object) (array(
'isAdmin' => function() {
return true;
}
(...)
しかしvar_dump($that->user)
空の閉鎖を返す(?):
object(stdClass)#3 (1) {
["isAdmin"]=>
object(Closure)#2 (1) {
["this"]=>
object(View)#1 (0) {
}
}
}
をして$that->user->isAdmin()
リターンでそれを直接呼び出しますCall to undefined method stdClass::isAdmin()
。
$that->user->isAdmin()
に電話するには、$that
をどのように書き換えることができますか?
汚れた/ハッキーなやり方で行うことができます。これは嘲笑の目的のみのためです。
トリッキーな部分は、 ')(それは' $ that-> USER-> isAdminによって正確に呼ばれるようにならないことです、それは模擬だから。私は '$ that'オブジェクトだけを変更できます。 –
クロージャーは必要ありません。編集に関しては、その名前が – Federkun
であるメソッドが必要です。これはPHP7の構造体でもありますか? '予期せぬクラス '(T_CLASS)' –