2009-06-16 93 views
1

什麼是用Zend_Form的創建具體的申請表格Zend_Form和麪向對象的設計模式

1時)使用「擴展」正確的方式和派生類

class MyForm extends Zend_Form { 

public function __construct() { 
    $el = $this->createElement('text', 'el'); 
    $this->addElement($el); 
    // ... 
} 

} 

2)或者通過委託/代理模式

class MyForm { 

private $_form; 

public function __construct() { 
    $this->_form = new Zend_Form(); 
    $el = $this->createElement('text', 'el'); 
    $this->_form->addElement($el); 
    // ... 
} 

public function __call($I_method, $I_params) { 
    // ... forwarding calls to private delegate 
} 

} 
+0

2)不是代理 – dfa 2009-06-16 09:50:16

+0

爲什麼不能代理?真正的主題是隱藏的私人會員,並且收到來自MyForm的消息,可能並不是完整的擴展類實現,但我嘗試爲你展示基本想法 – duganets 2009-06-16 10:15:57

回答

1

我按照this example創建Form類並使用助手來實例化它們。靈感來自採埃孚項目負責人Matthew Weier O'Phinney,所以我很高興接受這是一個很好的做法。

+0

thx爲例,我也用這種方式來形成,但有時候認爲它可能不好辦法。根據LISP原則:1)前提條件不能在一個子類中加強。 2)子類中的後置條件不能被削弱。我認爲當我們在子類中重寫方法時,我們改變它的行爲並使用矛盾。 – duganets 2009-06-16 10:21:54

0

我使用

My_Form extends Zend_Form 

然後

My_Form_ConcreteImplementation extends My_Form 

的My_Form類用於設置缺省的裝飾和材料與混凝土impelemntation添加元素,如果需要處理的業務。它使它乾燥,這就是你需要的。沒有必要保持高達學術原理:P