Objekt in Klasse aufrufen kein vorschlag

Alles was die PHP erweiterung von NetBeans betrifft

Moderator: wegus

Antworten
Praktikant
Beiträge: 3
Registriert: 17.01.2014, 01:58

Objekt in Klasse aufrufen kein vorschlag

Beitrag von Praktikant » 17.01.2014, 02:11

Hi,

ich bin neu hier und habe gleich mal eine Frage :oops:
Ich Programmiere hobbymäßig mit PHP usw herum und bin dabei über Netbeans gestolpert.
Ich habe NetBeans IDE 7.4 (Build 201311011758) auf einem Windows 7 (64 bit) Rechner und habe folgendes Problem, wobei mir google auch nicht weiter helfen konnte :(

Ich möchte ein Objekt(eine Datenbankverbindung) an eine Klasse übergeben. Wenn ich nun in der Klasse das Objekt mit einer Methode aufrufen möchte bekomme ich keine Vorschlagsliste.
z.B.

Code: Alles auswählen

$this->db->query($query);
ich meine mich recht zu erinnern, das ich das mir bei NetBeans 7.3 nachdem ich $this->db->q eingetippt habe query vorgeschlagen worden ist.
Was muß ich machen damit ich das wieder bekomme, denn ich finde es erleichtert die Sache ungemein.

Vielleicht kann mir hier jemand weiter helfen damit das leben wieder leichter wird :wink:
Danke schon mal im voraus!

joestreich
Beiträge: 17
Registriert: 03.07.2013, 15:42

Re: Objekt in Klasse aufrufen kein vorschlag

Beitrag von joestreich » 17.01.2014, 10:33

Hey,

evtl. hilft dir das weiter, nutze selbst noch kein 7.4.

https://blogs.oracle.com/geertjan/entry ... pletion_in

Liebe Grüße,

Jérôme

Benutzeravatar
wegus
Beiträge: 458
Registriert: 26.09.2006, 09:07

Re: Objekt in Klasse aufrufen kein vorschlag

Beitrag von wegus » 21.01.2014, 12:15

Da PHP dynamisch typisieren kann, kann die IDE nicht wissen welches Objekt jetzt gerade in einer Variablen eine Instanz bildet. Damit das für den user und die IDE nachvollziehbar ist, sollte man bei der Deklaration einer Variablen den Typ mit

Code: Alles auswählen

/**
 * @var MY_DB
 */
$db= new MY_DB();

kennzeichnen und auch bei Funktionsdefinitionen in den Kommentaren klarstellen was man erwartet:

Code: Alles auswählen

/**
 * mydummymethod
 *
 * @param string $query an SQL Query
 * @param MY_DB $db
 * @throws someException
 * @return boolean|string[]  false bei Fehler, sonst Resultate als String-Array
 */
function mydummymethod($query, MY_DB $db) {
  return false;
}

dann sollte es funktionieren.
Wenn etwas zu einfach klingt um wahr zu sein, dann ist es oft auch nicht wahr!

Praktikant
Beiträge: 3
Registriert: 17.01.2014, 01:58

Re: Objekt in Klasse aufrufen kein vorschlag

Beitrag von Praktikant » 23.01.2014, 12:02

Hi und danke für deine Hilfe!

Es klappt auch so halb.

Wenn ich eine eigene Klasse (die ich geschrieben habe) klappt es auch, da bekomme ich dann den Vorschlag.
Verwende ich jedoch die Klasse z.B. PDO dann geht es nicht.

Mir ist schon irgendwie klar, das wenn ich ein Objekt erstelle und das an eine Klasse übergebe, dass dann Netbeans in der Klasse erstmal ja nur das Objekt hat und nicht die Klassen und deren Methoden. Aber irgendwie muß ich doch Netbeans das Klar machen können.

Vor allem geht es bei der eigenen Klasse/Objekt

Vielleicht hat jemand ja noch eine Idee!?!?

Benutzeravatar
wegus
Beiträge: 458
Registriert: 26.09.2006, 09:07

Re: Objekt in Klasse aufrufen kein vorschlag

Beitrag von wegus » 24.01.2014, 07:16

Praktikant hat geschrieben: Aber irgendwie muß ich doch Netbeans das Klar machen können.
Ja genau dafür sind die von mir oben genannten Kommentare da! Das ist nicht nur für den menschlichen Leser des Sourcecodes, genau das wertet Netbeans auch aus! Dazu gibt es auch zahlreiche Tutorials, etwa bei youtube oder hier: https://blogs.oracle.com/netbeansphp/ muß es auch noch was dazu geben. Problematisch wird es halt wenn man Code von Dritten verwendet und der keine phpdoc enthält.
Wenn etwas zu einfach klingt um wahr zu sein, dann ist es oft auch nicht wahr!

Praktikant
Beiträge: 3
Registriert: 17.01.2014, 01:58

Re: Objekt in Klasse aufrufen kein vorschlag

Beitrag von Praktikant » 09.02.2014, 16:45

Hi ich melde mich dann mal wieder!

Sorry habe deinen Beitrag irgendwie in geistiger Umnachtung überlesen!

Jetzt funktioniert alles!!!!!!!

Antworten