Klassen: $this zurücksetzen

fanste

Erfahrenes Mitglied
Hi,

Ich wollte mal wissen, ob es eine Möglichkeit gibt, innerhalb einer Klasse alle Klassenvariablen ($this->...) zurückzusetzen.
Momentan mache ich das von Hand. (sind "nur" 5 Arrays und 1 Variable mit Int Werten.) Aber bei einer größeren Menge von Vaiablen wird das ziehmlich aufwendig.

Danke für eure Antworten.
 
Jap, gibt es:
PHP:
foreach ($this as $variable => $value) {
	switch (gettype($this->$variable)) {
		case 'boolean': $value = false; break;
		case 'integer': // fall through
		case 'double': $value = 0; break;
		case 'string': $value = ''; break;
		case 'array': $value = array(); break;
		default: $value = null; break;
	}
	$this->$variable = $value;
}
 
Cool. Danke.
Aber um so richtig die Anfangswerte zu bekommen, gibt es nichts, oder? So müsste ich ein einheitiges Schema meiner deklarationen finden und mein Script umschreiben. Eine Vaiable hat nämlich z.B. den Wert -1 eine andere den Wert 0. Oder manche Arrays habe schon voreingestellte Werte.

EDIT:
Jetzt fällt mir eigenlich grad die Lösung ein, wenn es nichts besseres gibt.
Warum weise ich die Werte nicht erst mit einer Funktion zu? Dann müsste ich zum resetten der Variablen ja nur diese Funktion aufrufen.
 
Neue, kürzere, bessere, schönere, elegantere Idee:
PHP:
$this = new MyClass();
Vorausgesetzt, der Konstruktor stellt keine wilden Sachen an...
:)

Edit: Klar, das mit der Funktion wäre auch eine schöne Lösung.
 
Das funktioniert wirklich? Hätte nicht gedacht, dass es so einfach ist ;).

EDIT:
Wusste ichs doch :D Geht nicht.
Fehler:
Fatal error: Cannot re-assign $this in C:\server\htdocs\schule\admin\includes\TPLparser.php on line 38

EDIT2:
Was meinst du mit "wilden Sachen"
 
Zuletzt bearbeitet:
fanste hat gesagt.:
EDIT:
Wusste ichs doch :D Geht nicht.
Fehler:
Fatal error: Cannot re-assign $this in C:\server\htdocs\schule\admin\includes\TPLparser.php on line 38
Klar geht es, zumindest mit PHP 4. Du hast ja leider nicht angegeben, dass du scheinbar mit PHP 5 arbeitest.

EDIT2:
Was meinst du mit "wilden Sachen"
Damit meine ich irgendwelche Nebeneffekte des Konstruktoraufrufs, die über bloße Variableninitialisierungen hinausgehen (Einträge in Logfiles, Datenbankänderungen etc.)
 
Wusste nicht, dass die PHP Version von solcher Bedeutung. Wiso ändern die soetwas? So ein schrott.
 
Ja schon, aber dass man auf diese Art und Weiße die Klassenvariablen zurücksetzten kann, ist doch praktisch. warum lässt man das dann weg? Gibt es in PHP5 etwas anderes dafür?
 
Zurück