カスタムメソッドパラメータをクラス属性にバインドする
<p>クラス内で、Ctrl キーを押しながらクリックしたときに双方向リンクが確立されるように、クラス属性をメソッド パラメータにバインドする方法はありますか? </p>
<pre class="brush:php;toolbar:false;">クラスの添付ファイルはリポジトリを拡張します
{
パブリックドキュメント $documents;
パブリック関数 fromDocuments(呼び出し可能な $scope)
{
$this->scopeOnRepoProperty($scope, 'documents');
}
}
</pre>
<p>つまり、この場合、scopeOnRepoProperty() メソッドの 2 番目のパラメーター document はプロパティ $documents を参照する必要があるということです。 <br /><br />より広範なコンテキストは次のとおりです: <br />問題は、コードの大部分が非常に似ていることです。つまり、ほとんどのscopeXXX/fromXXXメソッドは同様のことを実行します。つまり、プロパティリポジトリです。メソッドにパラメータとして渡されます。たとえば、上記の例では、$scope($this->documents) が実行されますが、さらに、$this->documents が初期化されていない場合は、新しいインスタンスが作成されます。 <br /><br />コードは次のようになります。</p><p><br /></p>
<pre class="brush:php;toolbar:false;">パブリック関数 fromDocuments(callable $scope)
{
if (!isset($this->documents)) {
$this->documents = 新しいDocuments();
}
$scope($this->documents);
}
</pre>
<p>if ステートメントを書いたり、新しいオブジェクトを作成したり、毎回メソッドを呼び出したりするのを避けたかったので、呼び出し可能なオブジェクト、プロパティ名、および型のリフレクションを受け入れるメソッドを使用して実行できると考えました。クラス名。 </p><p>コードは正常に実行されますが、残念ながら、このアプローチにより、これらのプロパティへのバインドが失われます。以前のバージョンでは $this->documents だったのでリンクが存在していましたが、現在はそうではありません。 </p><p>これを達成する方法があるかどうか知りたいです。何か案は? </p>