PHP anonymous function assigned to class property in constructor is always null?と似たようなことをしようとしていますが、私の解決策はもっと簡単に思えます。私は、このソリューションのスタックオーバーフローホットショットからのコメントと、より良いものがあるかどうかを知りたかったのです。これは「ベストプラクティス」問題のようなものです。クラスのプロパティに関数を割り当てる
私はクラス/オブジェクトに関数(匿名または定義済み)を渡し、その関数を後で呼び出すことができます。これが実行されると
function Foo($arg) {return sprintf('In Foo(%s)',$arg);}
function Bar($arg) {return sprintf('In Bar(%s)',$arg);}
class TestIt {
private $func;
public function __construct($func) { $this->func = $func; }
public function OutPut($arg) {
return $this->func($arg);
}
}
$test = new TestIt('Foo');
echo $test->OutPut('Bozo');
、私はこの方法$this->func
が存在しないというエラーが出ます:私はこれを始めています。 is_callable
テストをメソッドOutPut()
に入れた場合、実際には$this->func
は呼び出し可能ですが、エラーはそのままです。
私はis_callable
という3番目の引数を使用しても、うまく動作します。
public function OutPut($arg) {
return is_callable($this->func,false,$tmpfunc) ? $tmpfunc($arg) : null;
}
これはどのように解決策として組み立てられますか?あなたの考えが不思議です。
'__construnt'はあなたの質問の誤植ですか、それともあなたのコードにもありますか? – dan08
入力ミスが修正されました。ありがとう。 – Kiser
あきらめましたか? – AbraCadaver