Lier les paramètres de méthode personnalisée aux attributs de classe
<p>Au sein d'une classe, existe-t-il un moyen de lier un attribut de classe à un paramètre de méthode afin qu'un lien bidirectionnel soit établi sur Ctrl+clic ? </p>
<pre class="brush:php;toolbar:false;">class Les pièces jointes étendent le référentiel
{
Documents publics $documents;
fonction publique fromDocuments (appelable $ scope)
{
$this->scopeOnRepoProperty($scope, 'documents');
}
}
≪/pré>
<p>Ce que je veux dire, c'est que dans ce cas, le deuxième paramètre documents de la méthode scopeOnRepoProperty() doit faire référence à la propriété $documents. <br /><br />Le contexte plus large est : <br />Le problème est qu'une grande partie du code est très similaire, c'est-à-dire que la plupart des méthodes scopeXXX/fromXXX font quelque chose de similaire, c'est-à-dire un référentiel de propriétés est passé en paramètre à la méthode. Par exemple, dans l'exemple ci-dessus, $scope($this->documents) sera exécuté de plus, si $this->documents n'est pas initialisé, une nouvelle instance sera créée ; <br /><br />Le code ressemble donc à ceci :</p><p><br /></p>
<pre class="brush:php;toolbar:false;">fonction publique fromDocuments(callable $scope)
{
if (!isset($this->documents)) {
$this->documents = new Documents();
}
$scope($this->documents);
}
≪/pré>
<p>Je voulais éviter d'écrire une instruction if, de créer un nouvel objet et d'appeler une méthode à chaque fois, j'ai donc pensé que je pourrais le faire avec une méthode qui accepterait un objet appelable, un nom de propriété et une réflexion de type nom du cours. </p><p>Le code fonctionne correctement, mais malheureusement, à cause de cette approche, je perds la liaison avec ces propriétés. Dans les versions précédentes, il s'agissait de $this->documents, donc le lien était présent, mais ce n'est plus le cas. </p><p>J'aimerais savoir s'il existe un moyen d'y parvenir. Des idées? </p><p><br /></p>