• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage zum Scope von Objekten

freakXHTML

Mitglied
Hallo zusammen,
ich habe ein Frage zum Scope. Ich dachte immer, dass ein angelegtes Objekt nur innerhalb des entsprechenden Bereichs bekannt ist.

PHP:
<?php
$a = new TClass();
$a->mach_was();
?>
<!-- Ein bisschen HTML Code -->
<?php //Ein neuer PHP Bereich
$a->mach_wieder_was(); //$a ist immer noch bekannt
?>

Warum ist $a im zweiten Bereich noch bekannt? Der Scope müsste doch schon zu Ende sein?

Vielen Dank
lg, freakXHTMLß
 
Hallo zusammen,
ich habe ein Frage zum Scope. Ich dachte immer, dass ein angelegtes Objekt nur innerhalb des entsprechenden Bereichs bekannt ist.

PHP:
<?php
$a = new TClass();
$a->mach_was();
?>
<!-- Ein bisschen HTML Code -->
<?php //Ein neuer PHP Bereich
$a->mach_wieder_was(); //$a ist immer noch bekannt
?>

Warum ist $a im zweiten Bereich noch bekannt? Der Scope müsste doch schon zu Ende sein?

Vielen Dank
lg, freakXHTMLß

Der Scope endet mit dem Ende der Datei :)
Heisst wenn du die Seite nochmal aufrufen würdest, wäre $a nicht mehr bekannt. Wäre auch eine schlimme Sache, wenn man zwischendurch kein HTML schreiben könnte :)
 
Warum? Es ist einfach so :)

Es ist ziemlich nützlich, dass das nicht zwei verschiedene Scopes sind. So kann man einfach HTML code ausgeben, ohne alles in PHP Strings zu packen. Du kannst auch einen if-block im oberen PHP Block öffnen, und ihn erst im unteren Block schliessen. Dann wird der HTML code zwischen den Beiden blöcken nur ausgegeben, wenn der if-Block ausgeführt wird.

Du bist hier im "global scope". Der bleibt über alle Dateien erhalten, auch bei includes (sofern der include aus dem global scope heraus stattfindet) Innerhalb von Funktionen/Methoden bist du aber in einem neuen Scope. Wenn du aus einer Funktion eine Datei includest, wird sie im Scope der Funktion aufgerufen. Andere Blöcke wie if, while gelten nicht als neuer Scope, im Gegensatz zu C/C++.
 
Zurück
Oben