dedlfix: MVC - getter setter

Beitrag lesen

Tach!

class cEntity extends ArrayObject
{
   const nameTableName = "TABLE";
   const nameKeyName = "TABLE_ID";
   const nameField = "FIELD";
   public function method(){}
}

$objEntity = new cEntity();
$objEntity[$objEntity::nameField] = "Value";
echo $objEntity[$objEntity::nameField]; //--- Value

Deine Schreibweise dürfte einen Syntaxfehler liefern. Konstanten gehören zur Klasse, also sollten/müssen sie über den Klassenamen angesprochen werden.

$objEntity[cEntity::nameField] = "Value";
  echo $objEntity[cEntity::nameField]; //--- Value

Ein weiterer Vorteil ist, dass die jede ein oder ausgabe über eine Methode läuft offsetGet und offsetSet. Möchte man also einen Wert überprüfen oder abfangen, kann man das in diesen zwei magischen Methoden machen.

Eigentlich sind das ja keine magischen Methoden. Diese Bezeichnung ist einigen der mit __ beginnenden vorbehalten. Aber letztlich werden sie auch auf für den Anwender verdeckte Weise aufgerufen. Wie auch immer, die Schreibweise über eine Klassenkonstante ist nicht so einfach wie ein Eigenschaftenzugriff: $object->property. Das könntest du mit den magischen Methoden __get/__set hinbekommen. Die lässt du nur Werte für die Eigenschaften behandeln, die in einer Liste definiert sind.

dedlfix.