 <p>The best place to create your form elements is to override the <code>init()</code> method, eg</p> <pre><code>class App_forms_ItemEditor extends Zend_Form { public function init() { $email = $this-&gt;createElement('text', 'email'); $email-&gt;setLabel('Your email address:'); $email-&gt;setRequired(TRUE); $email-&gt;addValidator(new Zend_Validate_EmailAddress()); $email-&gt;addFilters(array( new Zend_Filter_StringTrim(), new Zend_Filter_StringToLower() )); $email-&gt;setAttrib('size', 40); $this-&gt;addElement($email); } } </code></pre> <p>If you hijack <code>Zend_Form::__construct()</code>, you should at least accept the same arguments and pass them on using <code>parent::__construct()</code></p> <p>Also, I'm a little unsure about the lowercase "f" in your class name's "form" part. From memory, the module autoloader translates a "Form" name part to a "forms" directory in your module.</p> <p>I do note however that you're not using the module autoloader (or at least, you haven't shown that you are)</p> <hr> <p>Regarding module autoloaders...</p> <p>The bootstrap process registers a module autoloader using the configured <code>appnamespace</code> value (usually "Application") with base path "application".</p> <p>A module autoloader automatically registers some class name / path mappings for classes starting with the configured namespace (eg "Application_"). This includes forms.</p> <p>Basically, it means you can create forms under <code>application/forms/MyForm.php</code> with classname <code>Application_Form_MyForm</code> and the autoloader will find it.</p> <p>Open up `Zend_Application_Module_Autoloader" to see the full list.</p>