Netbeans Automatische Vervollständigung der Methode der PHP-Klasse

7

Ich habe ein PHP-Projekt in Netbeans 7.3 erstellt. Ich habe eine Klasse ( MYSQL_DB). Wenn ich auf die Methoden in der Datei zugreifen möchte, in der ich die Klasse definiert habe, wird Folgendes angezeigt: Netbeans zeigt Methoden

Beachten Sie, dass dies außerhalb der Klassendefinition liegt (nicht verwendet $this). Aber wenn ich außerhalb dieser Datei auf seine Methoden zugreifen möchte, zeigt es mir nichts:

Netbeans konnte keine Methoden anzeigen

F: Gibt es eine Möglichkeit, Methoden anzuzeigen, wenn der Klassenname (wie das erste Bild) in alle Dateien eingegeben wird?
Danke im Voraus!

rückgängig gemacht
quelle

Antworten:

5

Ich vermute, dass das Problem darin besteht, dass Netbeans die Klasse Ihrer Variablen nicht kennt. (Das passiert in PHP häufig, da es schwach typisiert ist.) Geben Sie direkt nach dem Zuweisen des Werts zur Variablen einen speziellen Typhinweis ein:

$database=someFunction(); /* @var $database DatabaseClass */

Dieser Hinweis teilt Netbeans den Typ der $ -Datenbank mit, sodass Methoden vorgeschlagen werden können. Wenn Sie die Kontrolle über die Quelle von someFunction haben, können Sie dort auch einen Hinweis hinzufügen. Viele Beispiele finden Sie unter https://blogs.oracle.com/netbeansphp/entry/defining_a_variable_type_in .

David Brown
quelle
Danke, hat aber nicht funktioniert! Zeigt immer noch keine Vorschläge
rückgängig gemacht
Wenn ich den Kommentar vor die Variablendefinition innerhalb einer Funktion setze : global $database, kann ich ihre Methode sehen, aber es gibt Tausende solcher Fälle. Gibt es eine Möglichkeit, dies einmal zu tun und in allen Dateien verfügbar zu machen?
rückgängig gemacht
Wenn Sie der Autor von someFunction () sind, der Ihre $ -Datenbank zurückgibt, sollten Sie in der Lage sein, vor der Funktion einen phpDoc-Block hinzuzufügen und den Typ @return anzugeben. manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/…
David Brown
Ich habe das damals versucht, nicht getan, was ich wollte. Ich bin zu phpstorm gewechselt.
rückgängig gemacht
Dies war die einzige Antwort, die in meiner Netbeans 8.1-Installation funktioniert hat. Vielen Dank!
SebiF
3

Fügen Sie zunächst Kommentare als Code-Hinweise hinzu, in denen Ihre Variablen deklariert sind. Verwenden Sie in Klasseneigenschaften die Langformnotation für Kommentare:

/**
 * @var \ClassName $varname
 */
 private $varname;

Innerhalb von Klassen können Sie normalerweise die Inline-Kommentare verwenden:

/* @var \ClassName $inlinevar */
$inlinevar = new ClassName();

Möglicherweise müssen Sie Ihren Cache leeren. Dies ist hilfreich, wenn die automatische Vervollständigung für Klassen im selben Projekt nicht funktioniert. Suchen Sie unter Linux in Ihrem Home-Verzeichnis ~ / .cache / .netbeans / und entfernen Sie das Unterverzeichnis für die Projektversion (sichern Sie immer zuerst, falls etwas schief geht).

Wenn Ihre Klasse in einem anderen Projekt lebt, müssen Sie möglicherweise den Pfad zum Stammordner für das andere Projekt hinzufügen, damit Netbeans diesen Ordner nach Klassendefinitionen durchsuchen kann.

Lance Cleveland
quelle