Im März '09 scheinen die Vordenker von ZF immer noch darüber zu debattieren, wie man alles am besten organisiert. Es gibt eine Gerüst-Generator als Teil von Zend_Tool die in ZF v1.8 veröffentlicht werden soll. Es ist derzeit im Inkubator, ich habe es letzte Woche ausprobiert und es funktioniert, aber es gibt nicht viele Komponenten in seinem aktuellen Zustand erzeugt.
Von den Beispielen, die ich gesehen habe, scheint es, dass sie am besten getrennt von den Modellen, mit denen sie interagieren, verwaltet werden (dies ist von Zend Framework In Action):
/application
/modules/
/default
/controllers
/forms
ContactForm.php
LoginForm.php
RegisterForm.php
SupportForm.php
/models
Comment.php
User.php
Users.php
/views
/admin
/controllers
/views
Ich habe aber auch schon gesehen, dass die Formulare unterhalb des Modellverzeichnisses strukturiert sind. Matthew Weier O'Phinney zeigt, wie man sie für die Validierung von Modellen zu verwenden selbst:
/application
/modules/
/default
/controllers
/models
Comment.php
User.php
/Form
Comment.php
Login.php
Register.php
/views
/admin
/controllers
/views
Damit Ihre Dateien automatisch einbezogen werden, müssen Sie Ihre Klassen mit einem Unterstrich benennen.
Zum Beispiel, wenn Zend_Loader sieht
class RegisterController extends Zend_Controller_Action
Es sucht im php include_path nach:
Zend/Controller/Action.php
Ähnlich verhält es sich mit der ersten Struktur oben, wenn wir das Modul "default" in unseren include_path aufnehmen:
# bootstrap.php
$rootDir = dirname(dirname(__FILE__));
define('ROOT_DIR', $rootDir);
set_include_path(get_include_path()
. PATH_SEPARATOR . ROOT_DIR . '/library/'
. PATH_SEPARATOR . ROOT_DIR . '/application/modules/default/'
);
include 'Zend/Loader.php';
Zend_Loader::registerAutoload();
Sie benennen Ihre Klassen:
Forms_ContactForm
Models_User
Einige Programmierer legen die meisten ihrer Dateien in der Bibliothek ab, um keine zusätzlichen Include-Pfade hinzufügen zu müssen:
/library
/My
/Form
Contact.php
Unter der Annahme, dass der Bibliotheksordner enthalten ist, würde die obige Klasse so benannt werden:
My_Form_Contact
Viel Glück! -Matt