Ankündigung

Einklappen
Keine Ankündigung bisher.

__PHP_Incomplete_Class_Name

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • __PHP_Incomplete_Class_Name

    Hi, ich habe ein Objekt (oUser genannt) welches Benutzerdaten des aktuellen Benutzers speichert.

    PHP-Code:
    class oUser {
      public 
    $Name '';
      
    // ......

      
    public function setName($sName) {
        
    $this->Name = (string)substr($sName032);
      }
      
    // ......

    Beim Login wird dieses Objekt erzeugt und die Daten dort reingeschrieben, ein var_dump($User) zeigt mir folgendes an:

    Code:
      ["User"]=>
      object(__PHP_Incomplete_Class)#1 (6) {
        ["__PHP_Incomplete_Class_Name"]=>
        string(5) "oUser"
        ["Name"]=>
        string(3) "Testuser"
        ["Created"]=>
        int(1185982312)
        ["LastLogin"]=>
        int(1185983345)
        ["Logintime"]=>
        int(1185983347)
        ["Level"]=>
        int(1)
      }
    Jetzt die Frage, was genau bedeuted das "__PHP_Incomplete_Class_Name"? Das incomplete stört mich hier etwas, habe ich irgendwas falsch gemacht bzw. was wäre denn dann ein __PHP_Complete_Class_Name?

    (Das Script funktioniert wie es soll, die Bezeichnung ist mir eben nur durch var_dump aufgefallen, Fehlermeldungen werden auch keine erzeugt)

  • #2
    Manual - Objekte serialisieren
    Zitat von Manual
    Um ein Objekt wieder deserialisieren zu können, muss die Klasse dieses Objektes definiert werden. Das heißt, wenn Sie ein Objekt $a der Klasse A in page1.php haben und dieses serialisieren, erhalten Sie eine Zeichenkette, die sich auf die Klasse A bezieht, und alle Werte der in $a enthaltenen Variablen enthält. Wenn Sie $a der Klasse A in page2.php mittels unserialize wiederherstellen möchten, muss die Definition von Klasse A in page2.php vorhanden sein. Dies kann zum Beispiel durch das Speichern der Klassendefiniton von Klasse A in einer Include-Datei, und das Einbinden dieser Datei sowohl in page1.php und page2.php realisiert werden.
    Du hast vergessen zu erwähnen, dass du dieses User-Objekt über eine Session mitschleppst Das bedeutet: Erst alle Klassen laden, die Objekte in der Session liegen haben, erst dann Session starten. Kannste auch einfach haben: Daten als primite Typen ablegen und dann anhand dieser Daten einfach ein neues Objekt erstellen.
    Nicht jeder Fehler ist ein Bug.

    Kommentar


    • #3
      Ja stimmt, "User" steckt in $_SESSION...

      Ok, dann muß ich das ganze etwas umbauen,
      Danke!

      Kommentar

      Lädt...
      X