php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.08.2004, 12:59  
Gast
 
Beiträge: n/a
Standard Immer noch Probleme mit serialize und unserialize

edit by ben:

sorry, dass ich den beitrag editiert habe. aber er zerreißt das forum ;-)
wenn du denkst, dass es unbedingt notwendig ist, diese ultralange zeile zu posten ... dann ändere es wieder.

ich bitte um verständnis.
grüße ben.



---------------

Hi Leute,
nachdem PHP nun so schön OOP geworden ist, tut es sich immer noch recht schwer damitz Objekte zu serialisieren. Ich weiß, dass es die Funktion serialze() und unserialize() gibt.

Wenn ich ein Objekt serialisiere, dann erhalte ich folgenden String:

Code:
O:5:"MySQL":11:{s:12:"MySQLforms";O:4:"Form":12:
{s:16:"Formstr_action";s:5:"g.php";s:16:"Formstr_method";s:4:"post";s:17:
"Formstr_enctype";N;s:16:"Formstr_target";N;s:21:"Formboolean_enctype";b:0;s:20:"
Formboolean_target";b:0;s:11:"*str_text";N;s:12:"*str_style";N;s:11:"*str_name";N;s:18:
"*str_manAttribut";N;s:15:"*boolean_name";N;s:22:"*boolean_manAttribut";N;}s:14:"MySQLdb_host";s:9:"
localhost";s:14:"MySQLdb_user";s:0:"";s:18:"MySQLdb_password";s:0:"";s:18:"MySQLdb_datenbak";
N;s:19:"MySQLquery_string";N;s:17:"MySQLconnect_id";i:0;s:20:"MySQLdb_verbindung";b:1;s:16:"
MySQLdb_method";N;s:18:"MySQLdb_ergebnis";N;s:16:"MySQLdb_anzahl";N;}
So schön, so gut. Alles ist so, wie ich es haben wollte. Nun habe ich ein riesiges Problem, dass es z.B. beim Serialisieren mit JAVA nicht gibt.

Es werden nur die Objekteigenschaften nicht die Methoden serialisiert. Ich muss also ein neues Objekt der Klasse anlegen und irgendwie die serialisierten Eigenschaften auf das neue Objekt übertragen. Aber wie kann ich diesen String auseinander nehmen?

Bei JAVA legt man einfach eine Veriable vom Typ des zu deserialisierenden Objektes an und schon sit alles schick. Bei PHP komme ich einfach nicht darauf.

Bitte verweist mich nicht an das php.net-manual. Dort steht nicht wirklich viel. Ich bräuchte einfach nur ein Tipp, wie ich es schaffe, das neue Objekt mit den deserialisierten Eigenschaften zu füllen.

Gruß und Danke
Florian
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.08.2004, 16:40  
Gast
 
Beiträge: n/a
Standard

hi,

ich würde am liebsten auf www.php.net/unserialize verweisen aber was solls (:

php erkennt automatisch was du serialisiert hast. sprich wenn du ein object
serialisierst (erkennbar an dem O ganz am anfang des strings) dann wird auch ein object erzeugt wenn du unserialize aufrufst. du musst nur dafür sorgen das die klasse vor dem unserialize bekannt ist.

gruss
Sike
  Mit Zitat antworten
Alt 10.08.2004, 10:14  
Gast
 
Beiträge: n/a
Standard

OK, soweit funktioniert das auch. Áber wenn ich das richtig verstanden habe, dann hat dieses deserialisierte Objekt lediglich die Eigenschaften und nicht die Methoden der Klasse. Ist das richtig?

Auf Anhieb würde mir jetzt vielleicht folgende Lösung einfallen:

Code:
$eineKlasse = new EineKlasse;
$eineKlasse->deserialisieren(unserialize($seri));
Wobei in der Variable $seri, der serialisierte Inhalt von einem anderen Objekt von EineKlasse steht.
Und dann in der Methode deserialisieren:

Code:
protected function deserialisiere($object){
    /*
    irgend etwas, um die deserialisierten Eigenschaften dem neuen Objekt zuzuweisen
*/
}
Habe ich das so richtig verstanden?
  Mit Zitat antworten
Alt 11.08.2004, 12:13  
Gast
 
Beiträge: n/a
Standard

nicht so ganz. serialisierung in php bedeutet "speicherung" der properties. es wäre auch relativ sinnfrei das ganze objekt zu speichern.

serialize nimmt einfach alle properties und packt die zu einem string zusammen (inklusive der typen der jeweiligen prop)

unserialize erzeugt das entsprechende object, entpackt den string und setzt alle vorhanden properties in dem neuen object.

hoffe das war nu verständlich genug (:

Sike
  Mit Zitat antworten
Alt 11.08.2004, 14:35  
Gast
 
Beiträge: n/a
Standard

Nun ja, so richtig sinnfrei wäre das mit der Serialisierung nicht, denn es ist natürlich supergenial, wenn bei der Serialisierung die Strukturen des Objekts und deren Eigenschaften gespeichert werden. Wie bei JAVA.

Dann kann man wunderbar mit den deserialisierten Objekten arbeiten. Sollte PHP vielleicht demnächst mit aufnehmen. Ich find's die PHPart wahnsinnig umständlich!

Aber trotzdem Danke
  Mit Zitat antworten
Alt 13.08.2004, 16:44  
Gast
 
Beiträge: n/a
Standard

Aha... interessantes Thread, v.a. für PHP-Profis

PHP-Code:
<?
// Ein Objekt serialisieren und deserialisieren in PHP 4.x
class foo {
    var 
$blubb="test";
    function 
guguck()
    {
    }
}

$obj = new foo;
$save_obj serialize($obj);

// Hier wieder herstellen (Vorausgesetzt, der class-Code oben ist im gleichen Skript vorhanden)

$rest_obj unserialize($save_obj);
?>
Was ist daran nun kompliziert?
  Mit Zitat antworten
Alt 13.08.2004, 18:01  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von florianwendland
Nun ja, so richtig sinnfrei wäre das mit der Serialisierung nicht, denn es ist natürlich supergenial, wenn bei der Serialisierung die Strukturen des Objekts und deren Eigenschaften gespeichert werden. Wie bei JAVA.

Dann kann man wunderbar mit den deserialisierten Objekten arbeiten. Sollte PHP vielleicht demnächst mit aufnehmen. Ich find's die PHPart wahnsinnig umständlich!

Aber trotzdem Danke
in meinen augen schon. ich verstehe evtl auch dein problem falsch aber eine klasse muss in php vorhanden sein um ein objekt dieser klasse zu deserialiseren. das hat sehr gute gründe. stell dir zb mal vor du willst ein objekt inklusive methoden (find ich nach wie vor schwachsinn ^^) serialisieren. jetzt hat dieses objekt eine referenz auf ein anderes und das refenziert noch ein weiteres etc. das würde bedeuten du müssetest all diese klassen mitschleifen => sinnfrei (:

ich kenne mich in java nicht so gut aus aber ich bezweifle das da wirklich die methoden serialisert werden (siehe oben).

Sike
  Mit Zitat antworten
Alt 13.08.2004, 19:15  
Gast
 
Beiträge: n/a
Standard

Aber genau darin liegt das geute an einer kompletten Deserialisierung: denn in JAVA werden dadurch ganze Objektstrukturen, also auch die Objekte innerhlab der Objekte, usw. mit gespeichert. Das man die ganzen Klassen mitschleifen muss, wäre nicht wirklich ein Problem, da man ja in jeder Klasse, die ein anderes Objekt beinhaltet, diese Klasse bereits inkludiert.

Nun ja, vielleicht haben wir einfach unterschiedliche Auffassungen, von dem, was "Objekte serialisieren" eigentlich bedeutet, nämlich das Nachbauen der Objektstrukturen.
  Mit Zitat antworten
Alt 13.08.2004, 23:37  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

...kannst dir ja ne Funktion bauen, die die Klasse(n) speichert und der String (die Ausgabe von serialize($obj)) zusammenpackt und eben eine, die das wieder auseinandernimmt.

> Das man die ganzen Klassen mitschleifen muss, wäre nicht wirklich ein Problem,
> da man ja in jeder Klasse, die ein anderes Objekt beinhaltet, diese Klasse
> bereits inkludiert.

Eine Klasse, die ein Objekt beinhaltet?? Was meinst du mit diesem (ganzen) Satz?

Basti
Basti ist offline   Mit Zitat antworten
Alt 14.08.2004, 23:06  
Gast
 
Beiträge: n/a
Standard

Naja, wir haben eine wirklich verschiedene Auffassung von dem, was Serialisierung eines Objektes bedeutet oder leisten sollte. PHP liegt da meines Erachtens ganz klar ein paar Ligen unter JAVA.

Also, als denn und danke für alle Hilfe bisher. Hab jetzt ja einen Weg gefunden, wie s funzt!
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Firefox / IE - Probleme HTML, Usability und Barrierefreiheit 5 20.07.2009 17:04
serialize notyyy PHP Tipps 2008 6 08.12.2007 19:25
Probleme bei Speicherung von serialize() Strings Manni2k PHP Tipps 2006 13 15.10.2006 15:06
Probleme mit mbstring extension unter Debian HStev Server, Hosting und Workstations 3 30.08.2006 20:55
Probleme mit Rechteverteilung chmod() per script!!!??? Funky_ PHP Tipps 2006 7 17.06.2006 17:10
Probleme bei der Installation von Turck MMCache tomx992 PHP-Fortgeschrittene 2 27.09.2005 20:31
[Erledigt] Probleme beim Datenupload zu meiner Datenbank Datenbanken 3 05.09.2005 19:47
serialize / unserialize mAy^daY PHP Tipps 2005-2 2 11.08.2005 01:05
serialize() und unserialize() PHP Tipps 2005-2 11 22.06.2005 13:20
[Erledigt] hilfe! probleme mit... PHP Tipps 2005 4 12.04.2005 22:55
[Erledigt] CSV Größe macht Probleme mit php PHP Tipps 2005 5 15.03.2005 21:29
Zwei Rechner ins Netz - Router - Hub - Probleme... imported_Ben Off-Topic Diskussionen 37 13.01.2005 21:36
Technische Probleme mit Sessions PHP-Fortgeschrittene 4 18.11.2004 14:45
[Erledigt] Probleme mit Fremdsprachen HTML, Usability und Barrierefreiheit 2 21.09.2004 17:11
PHP Bilder in DB / Probleme bei Änderung PHP-Fortgeschrittene 1 05.06.2004 11:20

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
unserialize object ist null php, java unserialize, php serialize java, unserialize mysql, unserialize php große objekte, serializing unserializable objects in java, php unserialize mysql, php serialize objects, serialize geht nicht, serialization geht nicht, problem serialize daten aus datenbank unserialize, php unserialize funktioniert nicht, unserialize java, php unserialize serialze mysql objekte, php serialisieren von objekten die objekte beinhalten, unserialize problem, problem serialisieren java, s:18: php serialize, probleme serialisierung, serialisierte daten in php

Alle Zeitangaben in WEZ +1. Es ist jetzt 20:09 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.