Gültige Werte einer Zend_Config in der Businesslogic abfragen

Mir ist aufgefallen das öffentliche Variable aus der Zend_Config Klasse in der Businesslogic nicht genau überprüft werden, also ob sie vorhanden sind und ob sie einen gültigen Wert haben. Last uns diesen Beispiel zusammen anschauen.
Jeder Businesslogic-Prozess kann der Ablauf der einzelnen Prozesse über eine TXT Datei konfiguriert werden, das so aussehen könnte:

doSayHallo.type            = sometype
doSayHallo.class           = My_Hallo_Class
doSayHallo.namespace   = myhallospace
doSayHallo.action          = say
doSayHallo.public          = true
doSayHallo.success       = writeUsersName
doSayHallo.failure         = writeNothing

Danach implementieren wir die Methode execute in der My_Hallo_Class Klasse.

class My_Hallo_Class
{
    public function execute(Zend_Config $oConfig)
    {
        .
        ...
        if (!isset($oConfig->success))
        {
            throw new My_Businesslogic_Exception("No action for on-success-process defined");
        }
        ...
        ..
        .    
    }
 }

Das ist soweit gut, jedoch wird in der Methode execute mit isset() geprüft ob ein Wert für $oConfig->success existiert, so hier ACHTUNG, die isset() Methode prüft nur ob eine öffentliche Variable in der Konfiguration gesetzt ist und nicht ob sie leer ist oder einen gültigen wert hat, d.h. wenn die $oConfig->success in der Konfiguration existieren aber gar keinen Wert haben würde, so würde auch die Exception nicht geworfen, da hier die Abfrage war wäre.
 
Für die Überprüfung der Attribute einer Konfiguration gibt es in die Klasse Zend_Config die Methode public function get($name, $default = null).  Hier wird versucht einen Attributen aus der Zend_Config Instanz zu ermitteln und wenn es gefunden wird, dann wird sein Wert geliefert, sonnst besteht die Option sich einen Default-Wert liefern zu lassen, den wir selber bestimmen können.

So könnte das aussehen: Falls der Attribut nicht existiert, bekommen wir den Wert false zugewiesen, und wenn, dann überprüfen wir danach ob dieser nicht empty ist.
 

public function execute(Zend_Config $oConfig)
    {
    $successValue = $oConfig->get('success', false);
 
       if (false === $successValue || true === empty($successValue))
        {
            throw new My_Businesslogic_Exception("No action for on-success-process defined");
        }
}

 
Wir haben also genau gewährleistet dass das auslösen der Exception genau begründet ist, indem wir überprüft haben, ob das Attribut in der Konfiguration vorhanden ist und einen gültigen (zumindest keinen leeren) Wert hat.

3 thoughts on “Gültige Werte einer Zend_Config in der Businesslogic abfragen

  1. I use a couple of that you talked about. Individually, I like SEO Quake Toolbar and I appreciate SEM Hurry. I think SEM Rush is the ideal research marketing explore device. Certainly really worth the price purchased.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.