PHP bietet ja die Möglichkeit, ganz Stur und Dumm (Typenlos und prozedural) einfach drauf los zu Schreiben, und ziemlich schnell (auch wenn es Murks ist) zum Ziel zu kommen: Also ganz ohne Klassen. Das wird gleich funktionieren, ohne dass zuerst eine 'main'-Funktion, oder eine Basisklasse mit Konstruktor etc. vorhanden sein muss. Aber wo steht das dann '*drinnen*'? Bzw. wie kann man diesen "global Über-Scope / Top-Namespace" in Klassen ansprechen? Gibt es dafür ein Objekt? self::class und $this funktioniert ja nur innerhalb einer Klasse. ---> Cannot use "self" in the global scope. Es geht darum dass eine Funktion, die als Parameter eine Klasse (Objekt) sehen will, auch vom 'global scope' aufgerufen werden kann, und in dem Fall dieser 'global scope' mit übergeben wird. Ich will praktisch "Global-Parent" übergeben. (Beim frühen Initialisieren von Debugger usw. Wo es zu dem Zeitpunkt noch keine Instanz einer Klasse gibt, VON der das laufen könnte.) Ich habe in der Doku gesucht, etwas Gegoogelt, und diverse var_dumps() gemacht, aber finde das Objekt nicht. Vielleicht weiß jemand was gemeint ist. Geht das überhaupt? Gruß, tsx
:
Bearbeitet durch User
Tim S. schrieb: > Aber wo steht das dann '*drinnen*'? Dort (Datei) wo du es reinschreibst, ausserhalb jeglicher Klassen und namespacedefs also wie früher ohne OO. > Bzw. wie kann man diesen "global Über-Scope / Top-Namespace" in Klassen > ansprechen? Indem du die Datei von oben vorher importierst. global ist praktisch der "leere Raum" wo alles anfängt. > Gibt es dafür ein Objekt? self::class und $this funktioniert ja nur > innerhalb einer Klasse. ---> Cannot use "self" in the global scope. Wenn du es in eine Klasse packen willst gibts du dieser vorher einen Namen, üblicherweise wählt man auch gleich einen Namespace. Im Prinzip kannst du auch nur einen namespace verwenden. Ist dann so als hättest du defines mit einem Prefix. > Wo es zu dem Zeitpunkt noch keine Instanz einer Klasse gibt, VON der das > laufen könnte.) Das was du oben festgelegt hast musst du vorher auch importieren sonst wird es nicht gefunden. Die Klasse oben kannst du dann übergeben. Je nachdem was du da machst ist die Klasse static oder es existiert ein Objekt davon,... > Ich habe in der Doku gesucht, etwas Gegoogelt, und diverse var_dumps() > gemacht, aber finde das Objekt nicht. Vielleicht weiß jemand was gemeint > ist. Geht das überhaupt? Das Objekt legst du selber fest das ist damit gemeint. Global Space ist alles ausserhalb von irgendwas, praktisch der "leere Raum" wo du beginnst. Vielleicht ist das in der aktuellen PHP-Version anders und es existiert inzw. sowas wie ein default globales Object glaube ich aber eher nicht wenn dann vielleicht innerhalb von manchen Frameworks aber die nutzen eher eigene namespaces wo dann deren "globals" leben. Zugriff auf globale Objekte von gewissen Kontexten (innerhalb Klasse/Object/namespace) heraus nimmt man "global $foo" oder "$GLOBALS['foo']". Das Object das du von dort nutzen willst muss nat. vorher schon existieren. Erzeugen von Objekten aus anderen Kontexten heraus in den global space geht vermutlich nicht, müsste man ausprobieren, ich vermute mal die def ausserhalb muss vermutlich schon vorher vorhanden sein, so Art leeres Object.
Joa alles klar. Danke für die Hinweise und Infos. Franko S. schrieb: > Global Space ist alles ausserhalb von irgendwas, praktisch der "leere > Raum" wo du beginnst. --> Da bleibt nur noch "null", anstelle einer Klasse oder Type, zum übergeben. Es muss dann "eigen behandelt" werden, was ich mir sparen wollte. Wegen erst auf null Prüfen, etc. ... Danke soweit!
Tim S. schrieb: > --> Da bleibt nur noch "null", anstelle einer Klasse oder Type, zum > übergeben. Es muss dann "eigen behandelt" werden, was ich mir sparen > wollte. Wegen erst auf null Prüfen, etc. ... Danke soweit! Bei den namespaces gibts auch global, wenn man den Bezeichner weglässt: namespace { //deklarationen } Da liegt dann alles in global (bei ns bezieht sich das immer auf const, Klassen und Funktionen). Den jeweiligen namespace kannst du mit _NAMESPACE_ erfragen, vielleicht hilft dir das weiter. Lies dir mal https://www.php.net/manual/en/language.namespaces.php durch da steht das alles erklärt auch die Kommentare wo sich manches anders verhält als man es vermutet.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.