- Inspiriert durch das Feature der Eigenschaften aus C#
- Kombiniert die Lesbarkeit und intuitive Nutzung von public Attributen mit der Kapselung durch protected Attribute und Setter/Getter Methoden
- Public Attribute stehen wie gewohnt nach aussen hin zur Verfügung
- Protected Attribute werden gekapselt, können aber wie public Attribute gesetzt (wenn eine Setter Methode definiert wurde) und gelesen (wenn eine Getter Methode definiert wurde) werden
-
Protected Setter/Getter Methoden verhindern das direkte Nutzen dieser, falls die Methoden im Nachhinein wieder entfernt werden
class %packagenamespace%_%packagename%_%classname% extends DragonX_Application_Accessor_Abstract
{
public $string;
protected $_integer = 0;
protected function setInteger($integer)
{
$this->_integer = (int)$integer;
}
protected function getInteger()
{
return $this->_integer;
}
}
$object = new %packagenamespace%_%packagename%_%classname%();
$object->string = 'example';
$object->integer += 1;
-
Der Konstruktur erlaubt das Setzen beliebiger Attribute durch ein Array oder eines anderen Eigenschaftobjektes. Alle Attribute werden durch die Setter Methoden gesetzt, wenn diese definiert wurden
$first = new %packagenamespace%_%packagename%_%classname%(array('string' => 'example'));
$second = new %packagenamespace%_%packagename%_%classname%($first);
-
'toArray()' kann genutzt werden um alle Attribute als Array zurück zu geben. Alle Attribute werden durch die Getter Methoden gelesen, wenn diese definiert wurden
$object = new %packagenamespace%_%packagename%_%classname%(array('string' => 'example'));
$array = $object->toArray();
-
'isset()' kann genutzt zur Prüfung auf Existenz bzw. Ungleichheit zu NULL und 'unset()' zum Setzen eines Attributes auf NULL genutzt werden
$object = new %packagenamespace%_%packagename%_%classname%(array('string' => 'example'));
$true = isset($object->string);
unset($object->string);
$false = isset($object->string);
-
Arrays werden unterstützt mit '_' sowohl beim einzelnen Setzen eines Wertes als auch beim Befüllen aus einem Array
class %packagenamespace%_%packagename%_%classname% extends DragonX_Application_Accessor_Abstract
{
public $array = array('key' => 'value');
}
$object = new %packagenamespace%_%packagename%_%classname%();
$object->array['key'] = 'value';
$object->array_key = 'value';
$object->fromArray(array('array' => array('key' => 'value')));
$object->fromArray(array('array_key' => 'value'));