PHP objets et leurs fonctions
-
29-09-2019 - |
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
}
}
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;
}