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.
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.
This truly is this kind of a superb useful resource that you simply are providing and you give it aside for no cost of charge. I found it on Bing
Thank you very much for this!