Sie können nicht von statischen Methoden auf nicht statische Eigenschaften zugreifen. Nicht statische Eigenschaften gehören nur zu instanziierten Objekten, wobei jedes instanziierte Objekt einen eigenen Eigenschaftswert hat.
Ich werde in einem Beispiel veranschaulichen, dieser Code funktioniert nicht :
%Vor%Ähnliche Beiträge hier
Die einzige Möglichkeit, eine nicht statische Methode von einer statischen Methode aus aufzurufen, ist eine Instanz der Klasse, die die nicht statische Methode enthält. Eine nicht statische Methode ist definitionsgemäß eine, die als ON einer Instanz einer Klasse bezeichnet wird, während eine statische Methode zur Klasse selbst gehört.
Es ist am besten, die Spezifikationen für das Objekt zu bestimmen, wenn Sie es erstellen, und es klingt, als ob Ihre Spezifikation des Objekts nicht mit dem Muster übereinstimmt, das Sie gewählt haben.
Im Allgemeinen sollten Sie sich fragen: "Muss ich nur eine einzelne Instanz eines Objekts (statisch) oder mehr als eines haben?"
Für diese bestimmte Instanz (Verbindung zu und Abfrage einer Datenbank) ist es nicht ratsam, ein instanziiertes Objekt für das Datenbankobjekt zu haben, es sei denn, Sie müssen mehrere Verbindungen zu der Datenbank herstellen.
Damit haben Sie einen Anwendungsfall für ein instanziiertes gegen statisches Objekt. Mehrere gleichzeitige Verbindungen können die Datenbank überlasten, abhängig von der Konfiguration und wie oft eine Verbindung in einer einzigen Ausführung erstellt wird.
Vor diesem Hintergrund gibt es verschiedene OOP-Design- "Muster" für PHP, die für die Architektur von Objekten hilfreich sind. Siehe Ссылка für einen guten Überblick über die häufigeren Muster.
Für ein funktionierendes Beispiel Ссылка
Hinweis Ich habe mysqli in mysqli2 umbenannt und eine falsche Klasse für die Abfrage erstellt und der Verbindung und der Objekterstellung ein Tracking hinzugefügt.
%Vor%