Question

J'utilise PHP 5 maintenant et je suis exubérant d'utiliser POO en PHP 5. Je rencontre un problème. Je suis arrivé quelques classes et quelques fonctions à l'intérieur. Peu de fonctions nécessitent des arguments à transmettre qui sont l'objet de ces classes, je me suis écrit. Les arguments ne sont pas strictement typés j'ai remarqué. Est-il un moyen de le rendre strictement typé de sorte qu'au moment de la compilation que je pourrais utiliser IntelliSense?

Exemple:

class Test
{
   public $IsTested;

   public function Testify($test)
   {
      //I can access like $test->$IsTested but this is what not IDE getting it
      //I would love to type $test-> only and IDE will list me available options including $IsTested
   }
}
Était-ce utile?

La solution

Eh bien, vous pouvez utiliser de type faisant allusion à faire ce que vous voulez :

public function Testify(Test $test) {

}

Ou alors, le docblock:

/**
 * @param Test $test The test to run
 */

Cela dépend de l'IDE, et comment il prend les conseils de type ... Je sais que NetBeans est assez intelligent pour ramasser le type soupçon Testify(Test $test) et laissez-vous aller à partir de là, mais certains autres IDEs ne sont pas si intelligents ... donc, cela dépend vraiment de votre IDE quelle réponse vous obtiendrez la saisie semi-automatique ...

Autres conseils

J'allais donner un simple « Non » réponse, puis trouvé la section type hinting dans la documentation PHP.

Je suppose que cela répond.

<?php
class Test
{
   public $IsTested;

   public function Testify(Test $test)
   {
      // Testify can now only be called with an object of type Test
   }
}

Je ne sais pas IntelliSense sait sur le type hinting, cependant. Tout dépend.

$test n'est pas variable de classe. Peut-être que vous voulez $this?

$this->IsTested;

ou

public function Testify(Test $test)
{
   $test->IsTested;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top