Dsao_DataHandler_Abstract Klassenreferenz

Abstrakte Klasse, die ein ArrayObject mit Daten und eine entsprechende API zur Verwaltung der Daten bietet. Mehr ...

Klassendiagramm für Dsao_DataHandler_Abstract:

Dsao_Db_Table_DataHandler_Abstract Dsao_Uri_Http Dsao_Db_Table_DataHandler_Row_Abstract Dsao_Hero Dsao_Scroll Dsao_User

Aufstellung aller Elemente

Öffentliche Methoden

 __call ($method, $parameters)
 Fängt Aufrufe wie 'getId()' oder 'setName()' o.
 __construct (array $data=array(), $readOnly=false)
 Setzt Daten.
 __get ($property)
 Einzelne Eigenschaft zurück geben.
 __isset ($property)
 Prüft, ob Eigenschaft vorhanden ist.
 __set ($property, $value)
 Setzt eine einzelne Eigenschaft.
 __sleep ()
 Loeschen von Tabellenobjekten und Rueckgabe von Array.
 __unset ($property)
 Element der Daten des Objekts löschen.
 __wakeup ()
 Deserialisierungroutine.
 clearData ()
 Löscht Daten des Objekts, ohne die Tabellenzeilen zu beeinträchtigen.
 getData ($properties=null, $default=null)
 (Teile der) Daten zurück geben.
 hasData (array $properties=array(), $or=false, array $skip=array())
 Prüft, ob übergeben Daten exisitieren.
 isReadOnly ($throw=false)
 Ob Objekt schreibgeschützt ist.
 isValid ($throw=false)
 Gültigkeit des Objekts.
 setData (array $data=array(), $overwrite=true)
 Setzt Daten des Objekts.
 setFromArray (array $data=array())
 Ersetzt bisherige Daten durch übergbene.
 setReadOnly ($readOnly=true)
 Markiert das Objekt als (nicht länger) schreibgeschützt.
 setValid ($valid=true)
 Setzt die Gültigkeit (wenn z.B.
 toArray ()
 Gibt alle Daten des Objekts als Array zurück.

Geschützte Methoden

 _checkValidity ()
 Gültigkeit des Objekts prüfen.
 _cleanData ($data)
 Säubert einen Array von Daten.
 _resetValidity ()
 Setzt Gültigkeit zurück.

Geschützte Attribute

 $_data = array()
 array, Daten des Objekts.
 $_propertiesMandatory = array()
 array, Notwendige Eigenschaften für eine grundlegende Gültigkeitsprüfung
 $_propertiesProtected = array()
 array, Geschützte Eigenschaften, können nicht über setData() gesetzt werden
 $_readOnly = false
 bool, ob Objekt schreibgeschützt ist
 $_valid = null
 bool, Gültigkeit (der Daten) des Objekts


Ausführliche Beschreibung

Abstrakte Klasse, die ein ArrayObject mit Daten und eine entsprechende API zur Verwaltung der Daten bietet.

Lange Beschreibung.

Autor:
DSAo-Md

http://www.gnu.org/licenses/gpl-3.0.html GNU Public License

Version:
SVN: $Id: Abstract.php 519 2009-09-13 15:51:26Z saviola777 $

Definiert in Zeile 12 der Datei Abstract.php.


Beschreibung der Konstruktoren und Destruktoren

Dsao_DataHandler_Abstract::__construct ( array $  data = array(),
readOnly = false 
)

Setzt Daten.

Parameter:
$data array, Daten
$readOnly bool, schreibgeschützt?

Definiert in Zeile 101 der Datei Abstract.php.

Benutzt setData() und setReadOnly().

00102   {
00103     // Damit man einfach isset() benutzen kann
00104     $this->_propertiesProtected = array_flip($this->_propertiesProtected);
00105 
00106     $this->setData($data);
00107 
00108     $this->setReadOnly($readOnly);
00109   }


Dokumentation der Elementfunktionen

Dsao_DataHandler_Abstract::__call ( method,
parameters 
)

Fängt Aufrufe wie 'getId()' oder 'setName()' o.

ä. auf und leitet sie an die entsprechenden Methoden weiter.

Parameter:
$method string, Methodenname
$parameters array, Parameter
Rückgabe:
mixed, je nach Methode

Definiert in Zeile 48 der Datei Abstract.php.

Benutzt __set() und Dsao_Model_Abstract::underscore().

00049   {
00050     // 'getId' -> 'get_id'
00051     $methodUnderscored = Dsao_Model_Abstract::underscore($method);
00052     $parts = explode('_', $methodUnderscored, 2);
00053 
00054     // 'get_id' -> 'get'
00055     $operation  = (isset($parts[0]) ? $parts[0] : null);
00056     // 'get_id' -> 'id'
00057     $property   = (isset($parts[1]) ? $parts[1] : null);
00058 
00059     switch ($operation)
00060     {
00061       case 'get':
00062       case 'unset':
00063       case 'isset':
00064       {
00065         $methodName = '__'.$operation;
00066 
00067         return $this->$methodName($property);
00068       }
00069       break;
00070 
00071       case 'set':
00072       {
00073         // Falls kein Parameter übergeben wurde, null annehmen (->unset)
00074         if (!isset($parameters[0]))
00075         {
00076           $parameters[0] = null;
00077         }
00078 
00079         $this->__set($property, $parameters[0]);
00080 
00081         // Fließendes Interface bei set*()-Methoden
00082         return $this;
00083       }
00084       break;
00085 
00086       default:
00087       {
00088         throw new Dsao_Exception(array(
00089           'message' =>'dsao_datahandler_abstract_method_not_found',
00090           'variables' => array('method' => $method)));
00091       }
00092     }
00093   }

Dsao_DataHandler_Abstract::__get ( property  ) 

Einzelne Eigenschaft zurück geben.

Parameter:
$property string, Eigenschaft

Definiert in Zeile 116 der Datei Abstract.php.

Wird benutzt von Dsao_Db_Table_DataHandler_Abstract::_addWhere(), Dsao_Scroll::_delete(), Dsao_Scroll::delete(), Dsao_Scroll::getOtherUser(), Dsao_Scroll::isAuthor(), Dsao_Scroll::isDeleted(), Dsao_Scroll::isParticipated(), Dsao_Scroll::isRead(), Dsao_Scroll::isRecipient(), Dsao_Scroll::markRead(), Dsao_Scroll::refresh(), Dsao_Scroll::toArrayDecoded(), Dsao_Hero::update() und Dsao_User::update().

00117   {
00118     $property = (string) $property;
00119 
00120     return isset($this->_data[$property]) ?
00121       $this->_data[$property] : null;
00122   }

Dsao_DataHandler_Abstract::__isset ( property  ) 

Prüft, ob Eigenschaft vorhanden ist.

Parameter:
$property string, Eigenschaft
Rückgabe:
bool, ob Eigenschaft vorhanden ist

Definiert in Zeile 130 der Datei Abstract.php.

Wird benutzt von __unset(), _checkValidity(), _cleanData(), Dsao_Db_Table_DataHandler_Abstract::_getValidIdentifiers(), getData(), hasData(), Dsao_Scroll::isDeleted(), Dsao_Scroll::isRead(), setData() und Dsao_Scroll::toArrayDecoded().

00131   {
00132     return isset($this->_data[(string) $property]);
00133   }

Dsao_DataHandler_Abstract::__set ( property,
value 
)

Setzt eine einzelne Eigenschaft.

Parameter:
$property string, Eigenschaft
$value mixed, Wert
Rückgabe:
void

Definiert in Zeile 142 der Datei Abstract.php.

Benutzt __unset() und _resetValidity().

Wird benutzt von __call(), Dsao_Scroll::delete(), Dsao_Db_Table_DataHandler_Row_Abstract::exists() und Dsao_Scroll::markRead().

00143   {
00144     if (!$property)
00145     {
00146       return;
00147     }
00148 
00149     // Ggf. Exception werfen
00150     $this->_resetValidity(true);
00151 
00152     // Falls null übergeben wurde, löschen
00153     if (null === $value)
00154     {
00155       $this->__unset($property);
00156     }
00157     else
00158     {
00159       $this->_data[(string) $property] = $value;
00160     }
00161   }

Dsao_DataHandler_Abstract::__sleep (  ) 

Loeschen von Tabellenobjekten und Rueckgabe von Array.

Wird aufgerufen, wenn Objekt serialisiert werden soll, loescht Tabellenobjekte und gibt Array mit zu sichernden Werten zurueck

Rückgabe:
array

Erneute Implementation in Dsao_Db_Table_DataHandler_Abstract.

Definiert in Zeile 171 der Datei Abstract.php.

00172   {
00173     // Wichtige Einstellungen sichern
00174     return array('_readOnly', '_data', '_valid');
00175   }

Dsao_DataHandler_Abstract::__unset ( property  ) 

Element der Daten des Objekts löschen.

Parameter:
$property string, Element
Rückgabe:
void

Definiert in Zeile 183 der Datei Abstract.php.

Benutzt __isset() und _resetValidity().

Wird benutzt von __set().

00184   {
00185     $this->_resetValidity();
00186 
00187     $property = (string) $property;
00188 
00189     // Falls Element vorhanden
00190     if ($this->__isset($property))
00191     {
00192       unset($this->_data[$property]);
00193     }
00194   }

Dsao_DataHandler_Abstract::__wakeup (  ) 

Deserialisierungroutine.

Daten sind widerhergestellt, aber geschütze Eigenschaften müssen wieder in die richtige Form gebracht werden (vllt. sollte man sich hier was besseres ausdenken).

Rückgabe:
typeReturn, descReturn

Definiert in Zeile 205 der Datei Abstract.php.

00206   {
00207     $this->_propertiesProtected = array_flip($this->_propertiesProtected);
00208   }

Dsao_DataHandler_Abstract::_checkValidity (  )  [protected]

Gültigkeit des Objekts prüfen.

Rückgabe:
bool, Gültigkeit

Erneute Implementation in Dsao_Db_Table_DataHandler_Abstract, Dsao_Hero, Dsao_Scroll und Dsao_User.

Definiert in Zeile 215 der Datei Abstract.php.

Benutzt __isset().

Wird benutzt von isValid() und setValid().

00216   {
00217     // Pflichtdaten durchgehen
00218     foreach ($this->_propertiesMandatory as $property)
00219     {
00220       // Falls Datum nicht vorhanden
00221       if (!$this->__isset($property))
00222       {
00223         $this->_valid = false;
00224 
00225         return false;
00226       }
00227     }
00228 
00229     $this->_valid = true;
00230 
00231     return true;
00232   }

Dsao_DataHandler_Abstract::_cleanData ( data  )  [protected]

Säubert einen Array von Daten.

Geschütze Eigenschaften werden entfernt, wenn sie bereits vorhanden sind.

Parameter:
$data array, Daten

Definiert in Zeile 241 der Datei Abstract.php.

Benutzt __isset().

Wird benutzt von setData() und setFromArray().

00242   {
00243     foreach ($data as $property => $value)
00244     {
00245       // Falls geschütze Eigenschaft übergeben wurde und diese bereits
00246       // vorhanden, löschen
00247       if (isset($this->_propertiesProtected[$property])
00248         && $this->__isset($property))
00249       {
00250         unset($data[$property]);
00251       }
00252     }
00253 
00254     return $data;
00255   }

Dsao_DataHandler_Abstract::_resetValidity (  )  [protected]

Setzt Gültigkeit zurück.

Rückgabe:
void

Erneute Implementation in Dsao_Db_Table_DataHandler_Abstract.

Definiert in Zeile 262 der Datei Abstract.php.

Benutzt isReadOnly().

Wird benutzt von __set(), __unset(), clearData() und setData().

00263   {
00264     $this->isReadOnly(true);
00265 
00266     $this->_valid = null;
00267   }

Dsao_DataHandler_Abstract::clearData (  ) 

Löscht Daten des Objekts, ohne die Tabellenzeilen zu beeinträchtigen.

Rückgabe:
Dsao_DataHandler_Abstract, fließendes Interface

Definiert in Zeile 274 der Datei Abstract.php.

Benutzt _resetValidity().

Wird benutzt von setFromArray().

00275   {
00276     // Gültigkeit zurücksetzen
00277     $this->_resetValidity();
00278 
00279     // Daten löschen
00280     $this->_data = array();
00281 
00282     return $this;
00283   }

Dsao_DataHandler_Abstract::getData ( properties = null,
default = null 
)

(Teile der) Daten zurück geben.

Der erste Parameter kann entweder ein String sein, wenn nur ein Wert zurückgegeben werden soll (ist nur im Zusammenhang mit dem zweiten Parameter sinnvoll, da ansonsten auch __get() verwendet werden kann) oder als Array im folgenden Format:

array('property' => 'default', 'property2')

Sollte die Eigenschaft 'property' nicht existieren, wird der Wert 'default' genommen. Im zweiten Fall wurde kein Standardwert übergeben, sollte der Wert nicht existieren, wird $default zurück gegeben.

Parameter:
$properties array|string, zurückzugebene Daten
$default mixed, Standardwert
Rückgabe:
array, Daten

Definiert in Zeile 303 der Datei Abstract.php.

Benutzt __isset().

Wird benutzt von Dsao_Uri_Http::getParameters().

00304   {
00305     // Falls alles zurueckgegeben werden soll
00306     if (!$properties)
00307     {
00308       return $this->_data;
00309     }
00310 
00311     // Falls nur eine Eigenschaft zurueckgegeben werden soll
00312     if (!is_array($properties))
00313     {
00314       // Falls Element nicht vorhanden
00315       if (!$this->__isset($properties))
00316       {
00317         return $default;
00318       }
00319 
00320       return $this->_data[$properties];
00321     }
00322 
00323     // Array mit Ergebnissen
00324     $results = array();
00325 
00326     // Array/Objekt durchgehen
00327     foreach ($properties as $property => $defaultValue)
00328     {
00329       // Falls Index numerisch
00330       if (is_numeric($property))
00331       {
00332         $property = $defaultValue;
00333         $defaultValue = $default;
00334       }
00335 
00336       // Falls Element nicht vorhanden
00337       if (!$this->__isset($property))
00338       {
00339         $results[$property] = $defaultValue;
00340         continue;
00341       }
00342 
00343       // Eigenschaft dem Ergebnisarray zuweisen
00344       $results[$property] = $this->_data[$property];
00345     }
00346 
00347     return $results;
00348   }

Dsao_DataHandler_Abstract::hasData ( array $  properties = array(),
or = false,
array $  skip = array() 
)

Prüft, ob übergeben Daten exisitieren.

Wurden keien Daten übergeben, wird zurück gegeben, ob Parameter vorhanden sind. Der dritte Parameter gibt die bei letzterer Prüfung zu ignorierende Felder an (immer vorhandene Daten o.ä.).

Parameter:
$properties array, Zu prüfende Eigenschaften (leeres Array -> prüfen, ob überhaupt Parameter vorhanden sind)
$or bool, ob nur einer oder alle Eigenschaften für das Erfüllen der Bedingung vorhanden sein müssen
$skip array, zu überspringende Eigenschaften (nur bei Prüfung, ob überhaupt Parameter vorhanden sind)
Rückgabe:
bool, ob Parameter vorhanden sind

Definiert in Zeile 365 der Datei Abstract.php.

Benutzt __isset().

Wird benutzt von Dsao_Uri_Http::hasParameters().

00366   {
00367     // Falls nichts übergeben wurde, nur prüfen, ob überhaupt Parameter
00368     // vorhanden sind
00369     if (empty($properties))
00370     {
00371       $propertiesCount = count($this->_data);
00372 
00373       // Zu überspringende Eigenschaften aus Zählung herausnehmen
00374       foreach ($skip as $property)
00375       {
00376         // Token soll nicht mitgezählt werden
00377         if ($this->__isset($property))
00378         {
00379           $parametersCount--;
00380         }
00381       }
00382 
00383       return (bool) $propertiesCount;
00384     }
00385 
00386     // Eigenschaften durchgehen
00387     foreach ($properties as $property)
00388     {
00389       // Falls Eigenschaft vorhanden
00390       if ($this->__isset($property))
00391       {
00392         // Falls nur einer der Eigenschaften vorhanden sein soll, hier
00393         // abbrechen
00394         if ($or)
00395         {
00396           return true;
00397         }
00398       }
00399       // Eigenschaft nicht vorhanden, also abbrechen, wenn alle Parameter
00400       // für das Erfüllen der Bedingung vorhanden sein müssen
00401       else if (!$or)
00402       {
00403         return false;
00404       }
00405     }
00406 
00407     // Alle Eigenschaften vorhanden
00408     return true;
00409   }

Dsao_DataHandler_Abstract::isReadOnly ( throw = false  ) 

Ob Objekt schreibgeschützt ist.

Parameter:
$throw bool, ob Exception geworden werden soll, wenn Objekt schreibgeschützt ist.
Rückgabe:
bool, ob schreibgeschützt

Definiert in Zeile 418 der Datei Abstract.php.

Wird benutzt von _resetValidity(), Dsao_Db_Table_DataHandler_Abstract::delete(), Dsao_Db_Table_DataHandler_Row_Abstract::exists(), Dsao_Db_Table_DataHandler_Abstract::insert(), Dsao_Scroll::markRead(), Dsao_Db_Table_DataHandler_Abstract::refresh() und Dsao_Db_Table_DataHandler_Abstract::update().

00419   {
00420     // Falls Objekt schreibgeschützt und Exception geworfen werden soll
00421     if ($this->_readOnly && $throw)
00422     {
00423       throw new Dsao_Exception('dsao_datahandler_abstract_readonly');
00424     }
00425 
00426     return (bool) $this->_readOnly;
00427   }

Dsao_DataHandler_Abstract::isValid ( throw = false  ) 

Gültigkeit des Objekts.

Parameter:
$throw bool, ob ggf. eine Exception geworfen werden soll
Rückgabe:
bool, ob das Objekt gültig ist.

Definiert in Zeile 435 der Datei Abstract.php.

Benutzt _checkValidity().

Wird benutzt von Dsao_Db_Table_DataHandler_Abstract::insert(), Dsao_Model_Scroll_Scroll::insertScroll(), Dsao_Scroll::markRead() und Dsao_Uri_Http::toString().

00436   {
00437     // Falls Gültigkeit noch nicht geprüft wurde oder erneut geprüft werden
00438     // soll
00439     if (null === $this->_valid)
00440     {
00441       $this->_checkValidity();
00442     }
00443 
00444     // Falls Objekt ungültig und Exception geworfen werden soll
00445     if (!$this->_valid && $throw)
00446     {
00447       throw new Dsao_Exception('dsao_datahandler_abstract_invalid');
00448     }
00449 
00450     return $this->_valid;
00451   }

Dsao_DataHandler_Abstract::setData ( array $  data = array(),
overwrite = true 
)

Setzt Daten des Objekts.

Parameter:
$data array, zu setzende Daten
$overwrite bool, ob neue Werte vorhandene überschreiben sollen (nur wenn $append true ist)
Rückgabe:
Dsao_DataHandler_Abstract, fließendes Interface

Definiert in Zeile 461 der Datei Abstract.php.

Benutzt __isset(), _cleanData() und _resetValidity().

Wird benutzt von __construct(), Dsao_Db_Table_DataHandler_Abstract::_parseResult(), Dsao_Db_Table_DataHandler_Row_Abstract::refresh() und Dsao_Uri_Http::setParameters().

00462   {
00463     // Falls keine Daten übergeben wurden, abbrechen
00464     if (empty($data))
00465     {
00466       return $this;
00467     }
00468 
00469     // Gültigkeit zurück setzen
00470     $this->_resetValidity();
00471 
00472     // Daten säubern
00473     $data = $this->_cleanData($data);
00474 
00475     // Zu setzende Eigenschaften durchlaufen
00476     foreach ($data as $property => $value)
00477     {
00478       // Falls Eigenschaft vorhanden und Überschreiben deaktiviert
00479       if (!$overwrite && $this->__isset($property))
00480       {
00481         continue;
00482       }
00483 
00484       // Falls null übergeben wurde, überspringen
00485       if (null === $value)
00486       {
00487         continue;
00488       }
00489       // Ansonsten normal setzen (kein __set(), um Zeit zu sparen)
00490       else
00491       {
00492         $this->_data[$property] = $value;
00493       }
00494     }
00495 
00496     return $this;
00497   }

Dsao_DataHandler_Abstract::setFromArray ( array $  data = array()  ) 

Ersetzt bisherige Daten durch übergbene.

Parameter:
$data array, Daten
Rückgabe:
Dsao_DataHandler_Abstract, fließendes Interface

Definiert in Zeile 505 der Datei Abstract.php.

Benutzt _cleanData() und clearData().

Wird benutzt von Dsao_Scroll::insert().

00506   {
00507     // Daten löschen
00508     $this->clearData();
00509 
00510     // Und neu setzen
00511     $this->_data = $this->_cleanData($data);
00512 
00513     return $this;
00514   }

Dsao_DataHandler_Abstract::setReadOnly ( readOnly = true  ) 

Markiert das Objekt als (nicht länger) schreibgeschützt.

Parameter:
$readOnly bool
Rückgabe:
Dsao_DataHandler_Abstract, fließendes Interface

Definiert in Zeile 522 der Datei Abstract.php.

Wird benutzt von __construct() und Dsao_Model_User_Profile::editProfile().

00523   {
00524     $this->_readOnly = (bool) $readOnly;
00525 
00526     return $this;
00527   }

Dsao_DataHandler_Abstract::setValid ( valid = true  ) 

Setzt die Gültigkeit (wenn z.B.

Gültigkeitsprüfungen außerhalb durchgeführt wurden).

Es ist darauf zu achten, dass _checkValidity() niemals die Gültigkeit auf true setzen darf.

Parameter:
$valid bool, Gültigkeit
Rückgabe:
Dsao_DataHandler_Abstract, fließendes Interface

Definiert in Zeile 539 der Datei Abstract.php.

Benutzt _checkValidity().

Wird benutzt von Dsao_Model_Scroll_Scroll::_checkScrollData() und Dsao_Scroll::refresh().

00540   {
00541     // Gültigkeitsprüfung durchführen
00542     $validityChecked = $this->_checkValidity();
00543 
00544     if (!$validityChecked && $valid)
00545     {
00546       throw new Dsao_Exception('dsao_datahandler_abstract_set_valid');
00547     }
00548 
00549     $this->_valid = (bool) $valid;
00550 
00551     return $this;
00552   }

Dsao_DataHandler_Abstract::toArray (  ) 

Gibt alle Daten des Objekts als Array zurück.

Rückgabe:
array, Daten des Objekts

Definiert in Zeile 559 der Datei Abstract.php.

00560   {
00561     return $this->_data;
00562   }


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei:

Erzeugt am Fri Sep 18 19:04:12 2009 für DSA online - Morgendaemmerung von  doxygen 1.5.7.1