2010-10-11 9 views
4

J'utilise PHP 5 maintenant et je suis exubérant d'utiliser OOP en PHP 5. Je rencontre un problème. J'ai eu peu de cours et peu de fonctions à l'intérieur d'eux. Peu de fonctions nécessitent de passer des arguments qui sont l'objet de ces classes que j'ai écrites moi-même. Les arguments ne sont pas strictement typés, j'ai remarqué. Existe-t-il un moyen de le rendre strictement typé afin que je puisse utiliser Intellisense au moment de la compilation?Objets PHP et leurs fonctions

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 
    } 
} 

Répondre

3

Eh bien, vous pouvez utiliser type hinting pour faire ce que vous voulez:

public function Testify(Test $test) { 

} 

Soit ça, ou docblock:

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

Cela dépend de l'IDE, et comment il prend le type astuces ... Je sais que NetBeans est assez intelligent pour prendre l'indice de type Testify(Test $test) et vous laisser aller à partir de là, mais certains autres IDE ne sont pas si intelligents ... Donc, cela dépend vraiment de votre IDE, quelle réponse vous obtiendrez le autocomplétion ...

+0

OK que je dois donner ce un essai et vous permettra de savoir – Neutralizer

1

je vais donner un simple "Non" réponse, puis trouvé la section sur Type Hinting dans les documents PHP.

Je suppose que cela répond à cela. Cependant, je ne suis pas sûr qu'Intisense soit au courant des trucs de type. Tout dépend.

+0

OK que je dois donner ce un essai et vous permettra de savoir – Neutralizer

1

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

$this->IsTested; 

OU

public function Testify(Test $test) 
{ 
    $test->IsTested; 
} 
+1

Il fait référence à 'test' de $, l'argument de 'Testify'. – Matchu

+0

@Matchu, voir mes modifications. – pltvs

Questions connexes