Hello there,
das wäre ganz schlechtes Design so.
Zumal es ja auch kein Problem wäre, wenn du die Datenbank immer initialisierst, wenn du sie eh überall brauchst.
Dann spricht doch nichts dagegen, einmalig eine Instanz zu erzeugen und dann. Möchtest du die Datenbankverbindung auch innerhalb einer anderen Klasse nutzen, dann kannst du sie hier zusätzlich noch im Konstruktor übergeben, am besten via Referenz als &$mysqli, dann musst du die Datenbank nicht nochmal initialisieren.
Ein Singleton wäre eine andere Option, hier ist sowohl die Instanz als auch die Zugriffsfunktion statisch, allerdings ist das mittlerweile kein guter Programmierstil mehr, exzessiv Singletons einzusetzen.
Eine weitere Variante wäre, die Datenbankverbindung mit dem global Schlüsselwort noch überall bekannt zu machen, aber das ist auch sehr schlampig, weil man Variablen nicht global nutzen sollte, sondern nur da, wo man sie auch braucht. Deswegen ist es auch sinnvoll, einen geregelten Zugriff auf die MySQLI Klasse zu haben:
Hoffe das hilft dir weiter.
MfG
Alex
P.S: Umgekehrt kannst du aus einer Instanzmethode immer noch statische Member aufrufen, dies geht über das Selfschlüsselwort. AUs deiner Methode _query() könntest du die öffentliche Methode via self::query() aufrufen,.