Я решил изменить свой подход и сделал класс, который управляет всеми формами, принимает строки форм вместо форм.
static public function registerForm($formClassName, $formName) {
self::$_forms[$formName] = $formClassName;
}
Затем я создал функцию для получения формы или всех форм из класса, вот так
public function getForm($name) {
if(empty(self::$_forms[$name])) {
throw new Core_Form_Store_Exception;
}
// If the for is instanciated we return it
else if(self::$_forms[$name] instanceof Zend_Form) {
return self::$_forms[$name];
}
else {
// Instanciate the class and return it
$form = new self::$_forms[$name];
self::$_forms[$name] = $form;
return $form;
}
}
getForms()
только звонки getForm()
для каждой доступной формы. Я устал немного подражать интерфейсу обычного Zend_Form, когда дело доходит до имен функций и аргументов порядка. Теперь у меня это работает, и в качестве бонуса я фактически не создаю ни одной формы, пока она мне не понадобится. И если я только запрашиваю конкретную форму из класса хранилища, то только эта форма создается и сохраняется для последующего доступа.