dedlfix: OOP: clone

Beitrag lesen

echo $begrüßung;

Ich nehme an, es handelt sich um PHP 5. Welche Version ist es genau? (Diese Information wäre nur zum Nachvollziehen von Problem hilfreich, wenn meine nachfolgende Erklärung noch nicht reicht.)

$login = clone($_SESSION['login_object']); // klappt hervorragend und hat die erwünschte wirkung (alle attribute von $_SESSION['login_object'] werden in $login kopiert.

clone ist keine Funktion sondern ein Schlüsselwort, das allein steht. Die Klammern bewirken bei dir nur, dass die Variable $_SESSION['login_object'] zu einem Ausdruck wird.

class Login()
public function __construct()
   return clone($_SESSION['login_object']);

Konstruktoren geben unter PHP 5 nur Objekte der jeweiligen Klasse zurück. Unter PHP 4 war es noch möglich etwas ganz anderes zurückzugeben.

$login = new Login();
// in diesem Fall ist $login zwar eine ganz normale Instanz der Klasse Login, aber die Attribute von $_SESSION['login_object'] wurden nicht übernommen. Wie bekomme ich das hin?

Verwende entweder das Factory- oder das Singleton-Pattern.

echo "$verabschiedung $name";