Comment le document de la magie (_call et _callStatic) les méthodes de IDEs

Après de nombreuses années de bonheur, de codage dans notepad++ et sublime, j'ai été conseillé de donner un IDE PHP un aller. Je suis d'essayer phpStorm et il semble beau. La complétion de code et de la documentation est une grande fonctionnalité, mais n'est pas pour moi lorsque la magie méthodes sont utilisées. Est-il un travail autour pour obtenir phpStorm pour comprendre ce qui se passe dans les méthodes magiques?

Notre situation est quelque chose comme ceci:

abstract class a {
    public static function __callStatic($method,$args)
    {
        if(strpos($method,"get_by_") === 0)
        {
            //do stuff
        } elseif(strpos($method,"get_first_by_") === 0) {
            //do stuff
        } elseif($method == "get_all") {
            //do stuff
        }
    }
}

class b extends a {
    //some more stuff
}

b::get_by_user_id(27);
b::get_first_by_id(156);
b::get_all();

La magie callStatic méthode nous permet d'obtenir une collection d'objets à l'aide de 1 ou plusieurs arguments qui composent l'appel de la fonction.

Je vois qu'il y a un @la déclaration de méthode pour l'utiliser dans ces cas, mais phpStorm est seulement la cueillette jusqu'à la première de ces déclarations. En outre, je ne peut définir le type de retour à mixtes où que je préfère être en mesure de la définir comme quelle que soit la classe, c'était appelé sur b dans mon exemple).

Des idées ou des suggestions serait très très bien reçus, merci.

  • POURQUOI TOUT LE MONDE PENSE QUE PRIMORDIAL _call EST UNE BONNE IDÉE?!!
  • Obtenu de dire, +1 de Brian commentaire dans le cas où aucune personne saine d'esprit va la trouver cette question. Les méthodes magiques sont à toutes fins utiles: undocumentable (essayez de le document a(n) [paramètre|condition|postcondtion|exception] pour une méthode magique), pas IDE de compagnie (essayez de l'étape de débogage d'une méthode magique), résistant à la refactorisation (s'il vous plaît, ne même pas envisager d'essayer de refactoriser une méthode magique dans un poste permanent morceau de logiciel), et PARESSEUX (ok, la dernière peut être interprétée comme un avis).
  • -1 pour l'opinion dans le commentaire de @LukeA.Leber qu'elle témoigne d'un manque de vision. Alors que les méthodes magiques ne sont pas une manière d'écrire moins de code (si vous les utilisez pour être paresseux), les méthodes magiques de faire architectures possibles que simple ne serait pas possible autrement ou qui serait ainsi outrageusement complexe, il ne serait pas utile d'écriture. Et ils sont complètement IDE sympathiques lors de l'utilisation de PHPDoc. Notez que la plupart du temps, vous n'avez pas besoin de méthodes magiques, mais quand vous en avez besoin, il n'y a pas de substitut (en PHP.) Lorsqu'ils sont utilisés dans un très structurée de la manière de les utiliser est un formulaire de solution valable.
  • Ne pense pas primordial __call est une mauvaise idée. Il est tout au sujet de la mise en œuvre. La mise en œuvre de la question ci-dessus aurait certainement pas être le meilleur moyen, mais pour la chaîne de mesure de l'API, il permet beaucoup de flexibilité.
InformationsquelleAutor Rob Forrest | 2013-03-26