Willi: Eigene Session-Klasse

Hallo,

Ich habe seit einiger Zeit an einem eigenen CMS, welches auf dem modernsten Stand sein soll: PHP5, Objektorientierung, Ajax-Funktionen etc.
Bisher bin ich noch bei den "Grundlagen", habe also bisher neben einigen Gedanken die Datenbank-, Template-, Einstellungs- und Sessionklasse sowie die Datenbankstruktur erstellt.
Bei den letzen beiden bin ich mir allerdings nicht ganz sicher:
* Braucht es eine eigene Klasse zur Sicherung und zum Auslesen von Einstellungen?
* Braucht es eine eigene Session-Klasse oder soll ich auf die Session-Funktionalitäten von PHP zurückgreifen?
Ich habe mich für eine eigene Klasse entschieden, damit ich genau steuern und kontrollieren kann, wie das ganze abläuft und ich nicht nachher URL-Parameter angehängt habe, wo ich sie nicht will etc. Um die Session-Daten zu speichern, benutze ich eine eigene Tabelle in der Datenbank, welche aus folgenden Spalten besteht: sessionid (32-stelliger String), cookies (ja/nein), cookieid, lastaction, firstaction (jeweils UNIX-Timestamps), userid sowie „data“. In dieser „data“-Spalte speichere ich nun alle Daten, die nicht in die anderen Spalten passen und benutze 2 Methoden aus der Klasse „Session“ um Daten aus einem Array in das Format [Key1]=[Value1]||[Key2]=[Value2]|| … zu bringen bzw. zurück in ein Array zu konvertieren. Das sieht im Moment folgendermaßen aus:

  
 public function getData($key){  
  if($key == 'userid') return $this->userid;  
  $array = explode("||", $this->db->selectone("SELECT data FROM {$this->db->pre}onlineusers WHERE sid = '{$this->sid}'", 'data'));  
  foreach($array as $value){  
   $split = explode("=", $value);  
   $array2[$split[0]] = $split[1];  
  }  
  if($key == 'all') return $array2;  
  return $array2[$key];  
 }  
  
 public function setData($key, $value){  
  if($key == 'userid') $this->db->query("UPDATE {$this->db->pre}onlineusers SET userid = '$value'");  
  else {  
    $array = $this->getData('all');  
    $array[$key] = $value;  
    $array = mysql_real_escape_string($this->serialize($array));  
    $this->db->query("UPDATE {$this->db->pre}onlineusers SET data = '$array'");  
  }  
 }  
  
 private function serialize($array){  
  foreach($array as $key => $value){  
   $str .= $key . '=' . $value . '||';  
  }  
  return substr($str, 0, -2);  
 }  

Habt ihr Verbesserungsvorschläge zu diesem Konzept bzw. zu den Methoden?

Schöne Grüße,
Willi