По состоянию на март '09, лидеры мыслей ZF, похоже, все еще обсуждают лучшие способы все организовать. В состав Zend_Tool , который планируется выпустить в ZF v1.8, входит генератор строительных лесов. В настоящее время он находится в инкубаторе, я пробовал на прошлой неделе, и он работает, но в его текущем состоянии генерируется не так много компонентов.
Из примеров, которые я видел, кажется, что ими лучше управлять отдельно от моделей, с которыми они взаимодействуют (это из 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
Однако я также видел структурированные формы под каталогом модели. Мэтью Вейер О'Пинни показывает, как использовать их для проверки на моделях :
/application
/modules/
/default
/controllers
/models
Comment.php
User.php
/Form
Comment.php
Login.php
Register.php
/views
/admin
/controllers
/views
Чтобы ваши файлы автоматически включались, обязательно назовите ваши классы, используя модель подчеркивания.
Например, когда Zend_Loader видит
class RegisterController extends Zend_Controller_Action
В php include_path ищет:
Zend/Controller/Action.php
Аналогично, если предположить первую структуру выше, если мы включим модуль 'default' в наш include_path:
# 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();
Вы называете ваши классы:
Forms_ContactForm
Models_User
Некоторые программисты предпочитают помещать большинство своих файлов в библиотеку, чтобы им не нужно было добавлять дополнительные пути включения:
/library
/My
/Form
Contact.php
При условии, что папка библиотеки включена, вышеприведенный класс будет иметь имя:
My_Form_Contact
Удачи! Матф