2017-10-15 28 views
2

Lorsque vous utilisez phps __call pour faire une étendre la classe 2 classes, vous pouvez utiliser @method pour faire connaître l'IDE que les méthodes existent. Mais lorsque vous demandez à l'EDI de passer à la déclaration de la méthode, vous vous retrouvez sur la ligne @ méthode, une façon de ne pas vous coincer consiste à ajouter une ligne @see au-dessus ou au-dessous. Mais ajouter cette ligne et une ligne de séparateur rend PHPDoc 3 fois plus long/haut.Puis-je utiliser @see sur une ligne @method dans PHPDoc?

Est-il possible d'ajouter le @see sur la même ligne?

vu quelques exemples en utilisant comme il est, et un autre à l'intérieur en utilisant {}. Testés dans mon IDE (PhpStorm), et le saut à la déclaration du @see ne fonctionne que si son sur une ligne distincte.

Est-ce que PHPDoc nous permet d'utiliser un @see sur la même ligne que @method? Si oui, quelle est la syntaxe correcte?

Exemple:

<?php 
class a { function ma() { return "a"; } } 
class b { function mb() { return "b"; } } 

/** 
* Class c 
* 
* @method string mb() { @see b::mb() } 
*/ 
class c extends a 
{ 
    /** @var b b */ 
    public $b; 

    function __construct() { $this->b = new b(); } 
    function mc() { return "c"; } 

    function __call($name, $arguments) 
    { 
     return call_user_func_array([$this->b, $name], $arguments); 
    } 
} 

$c = new c(); 
var_dump($c->mb()); 

Répondre

1

PHPDoc n'a pas encore une norme officielle. PHPDocumentor est la norme de facto, mais PHP FIG y travaille aussi.

De the PHPStorm docs:

Dans les commentaires PHPDoc, PhpStorm prend en charge les options de formatage en conformité avec ZEND, PEAR, et d'autres normes.

Comme vous et moi avons tous deux découvert qu'il faut des essais et des erreurs pour comprendre exactement ce que PHPStorm prend en charge.

PHPDocumentor pris en charge par @see en ligne:

éléments structuraux ou texte en ligne dans une longue description, marqués avec l'étiquette @see affichera un lien dans leur description.

proposed standard états de PHP FIG:

étiquette spécifique peut-être une section "Inline PHPDoc" à la fin de la définition de "Tag" ... Un exemple est la balise @method. Cette balise peut être augmentée en utilisant un « Inline PHPDoc » pour fournir des informations supplémentaires en ce qui concerne les paramètres, la valeur de retour ou tout autre étiquette pris en charge par des fonctions et des méthodes.

Bizarrement la définition @method ne rend pas cela explicite.

je prendrais tout cela signifie que vous pouvez utiliser un @see sur une ligne @method dans les commentaires PHPDoc, mais ne vous attendez pas PHPStorm reconnaître encore. Votre syntaxe est correcte et selon les "standards" elle devrait rester à la fin de @method.