Frage

Ich bin mit PHP 5 jetzt und ich bin überschwänglich OOP verwendet in PHP 5. Ich auf ein Problem stoßen. Ich habe einige Klassen und einige Funktionen in ihnen. Nur wenige Funktionen erfordern Argumente übergeben werden, die Gegenstand dieser Klassen sind ich selbst geschrieben habe. Argumente sind nicht streng typisiert ich bemerkt. Gibt es eine Möglichkeit, es streng typisierte zu machen, so dass ich bei der Kompilierung Intellisense verwenden könnte?

Beispiel:

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
   }
}
War es hilfreich?

Lösung

Nun, könnten Sie Typ Hinting zu tun verwenden, was Sie wollen :

public function Testify(Test $test) {

}

Entweder das, oder die Docblock:

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

Es hängt von der IDE, und wie es die Art Hinweise nimmt ... Ich weiß, dass NetBeans klug genug ist, die Art-Hinweis Testify(Test $test) zu holen und lassen Sie gehen von dort aus, aber einige andere IDEs sind nicht so intelligent ... So ist es wirklich auf Ihrem IDE hängt die Antwort erhalten Sie die automatische Vervollständigung ...

Andere Tipps

Ich wollte eine einfache „Nein“ geben, Antwort, fand dann den Abschnitt Type Hinting in der PHP-Dokumentation .

Ich denke, dass die Antworten, die.

<?php
class Test
{
   public $IsTested;

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

Ich bin nicht sicher, Intellisense kennt Type Hinting, though. Das hängt davon.

$test ist nicht Klassenvariable. Vielleicht möchten Sie $this?

$this->IsTested;

oder

public function Testify(Test $test)
{
   $test->IsTested;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top