frankx: serialisierte klasseninstanz einlesen

Beitrag lesen

Hellihello

mit

  
 class Record {  
  var $feld1="feld1";  
  private $feld2="feld2";  
  
  function __construct () {  
  }  
  function setFeld2($wert) {  
   $this->feld2=$wert;  
  }  
  function write($name) {  
   file_put_contents($name, serialize($this));  
  }  
  function read($name) {  
       return unserialize(file_get_contents($name));  
  }  
  function load($name) {  
   $dateiInhalt=new Record;  
   $dateiInhalt=unserialize(file_get_contents($name));  
   foreach ($dateiInhalt as $key => $value) {  
    $this->$key=$value;  
   }  
   // geht nicht: $this=$dateiInhalt;  
  }  
 }  
 $record = new Record;  
 $record->setFeld2("feld2 neuer wert");  
 $record->write("dateiname");  
  
 $record1=new Record;  
 // geht aber unschön, weil nicht in Funktion verpackt  
 $dateiInhalt=unserialize(file_get_contents("dateiname"));  
 $record1=$dateiInhalt;  
 var_dump($record1);  
  
 $record2=new Record;  
 //geht auch, sieht aber irgendwie doppeltgemoppelt aus  
 $record2=$record2->read("dateiname");  
 var_dump($record2);  
  
 // ist das optimal?  
 $record3=new Record;  
 $record3->load("dateiname");  
 var_dump($record3);  

habe ich drei Möglichkeiten durchprobiert, den Inhalt einer Klasseninstanz aus einem serialisierten Datenfile auszulesen. Mein geträumter Favorit ist oben in der Funktion load auskommentiert und geht nicht, denn $this=$datenSatz gibt  "Fatal error: Cannot re-assign $this...".

Ist o.g. function load dann die "einfachste/beste/galanteste" Lösung oder ist mir ein Ansatz bisher entgangen?

dank und gruß

frankx