4 Stimmen

PHP-Objekte und ihre Funktionen

Ich benutze jetzt PHP 5 und bin begeistert von der Verwendung von OOP in PHP 5. Ich stoße auf ein Problem. Ich habe einige Klassen und einige Funktionen in ihnen. Ein paar Funktionen erfordern die Übergabe von Argumenten, die Objekte der Klassen sind, die ich selbst geschrieben habe. Ich habe bemerkt, dass die Argumente nicht streng typisiert sind. Gibt es eine Möglichkeit, sie streng typisiert zu machen, so dass ich zur Kompilierzeit Intellisense verwenden kann?

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

3voto

ircmaxell Punkte 159431

Nun, Sie könnten die Typenhinweis zu tun, was Sie wollen:

public function Testify(Test $test) {

}

Entweder das, oder der Docblock:

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

Es hängt von der IDE ab, und wie sie die Typ-Hinweise aufnimmt... Ich weiß, dass NetBeans intelligent genug ist, um den Typ-Hinweis zu erkennen Testify(Test $test) und lässt Sie von dort aus gehen, aber einige andere IDEs sind nicht so schlau... Es hängt also wirklich von Ihrer IDE ab, welche Antwort Ihnen die automatische Vervollständigung liefert...

1voto

Matchu Punkte 80505

Ich wollte mit einem einfachen "Nein" antworten, fand dann aber den Abschnitt über Typ Hinweis in den PHP-Dokumenten.

Ich denke, das beantwortet diese Frage.

<?php
class Test
{
   public $IsTested;

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

Ich bin mir allerdings nicht sicher, ob Intellisense über Typ-Hinweise Bescheid weiß. Das kommt ganz darauf an.

1voto

Alex Pliutau Punkte 20530

$test ist keine Klassenvariable. Vielleicht wollen Sie $this ?

$this->IsTested;

O

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X