Hi,
public static function load1($name) {
$dateiInhalt=new Record;
$dateiInhalt=unserialize(file_get_contents($name));
return $dateiInhalt;
}
>
> mit
>
> ~~~php
> $record=Record::laod1("dateiname");
>
scheint mir o.k.
Naja, ist immer noch etwas viel Aufwand - denn genau den gleichen Effekt hätte ja ein schlichtes:
$record = unserialize(file_get_contents("dateiname"));
Sinnvoller wäre, das Ergebnis der Dateioperation vorher noch zu prüfen, also in PHP 5 etwa:
$path = '/tmp/xyz';
if ($s = file_get_contents($path))
{
$myObj = unserialize($s);
} else {
throw new Exception("Error reading $path");
}
Beim Laden eines Objekts über unserialize() musst du allerdings beachten, dass _bestimmte_ Objekteigenschaften anschließend in jedem Fall gesondert wiederhergestellt werden müssen: Ressourcen-Handles und Referenzen. Wenn in einer Objekteigenschaft z.B. eine MySQL-Verbindungskennung gespeichert ist, dann geht diese über serialize/unserialize verloren.
PHP 5 bietet hierfür die abstrakte 'magische Methode' __wakeup(), die automatisch nach einer Objektwiederherstellung über unserialize aufgerufen wird. (Über __sleep() kann zudem festgelegt werden, welche Objekteigenschaften überhaupt serialisiert werden sollen.)
In PHP 4 muss zusätzlich zur Methode auch ihr Aufruf jeweils selbst implementiert werden.
Freundliche Grüße,
Sancho