2014-11-13 2 views
0

Я новичок в MVC и ZF2.Новое в Zend Framework 2. Как правильно структурировать модули?

Я успешно выполнил их учебник, чтобы создать базовое приложение. (http://framework.zend.com/manual/2.1/en/user-guide/overview.html). В этом учебнике они создают модуль под названием «Альбом» для добавления/редактирования/удаления музыкальных альбомов.

Что я хочу сделать, это создать приложение, которое будет иметь различные функции, такие как администрирование учетной записи пользователя, системная конфигурация и т. Д. Я знаю, прочитав другие сообщения, которые вам не нужны, чтобы создать новый модуль для каждая функция, скорее группируя их под одним использованием сущностей.

С учетом этого я изложил создание моего первого модуля «Пользователь», используя эту структуру, но я не уверен, что я делаю это правильно. Структура у меня есть на данный момент:

/module 
/Application 
    /config 
    /language 
    /view 
    /src 
    /Application 
    /Controller 
    /UserController.php 
    /Entity 
    /User.php 
    /UserTable.php 
    /view 
    /user 
     /user 
     /index 

Если вы хотите взглянуть на проверках коды из репо на https://bitbucket.org/newvisionjames/zf2-test/overview

Конкретных вопросов я являюсь:

1) У меня есть два «вид «справочники на данный момент, довольно уверен, что это неправильно. Кто-то правильно, если и так?

2) В учебнике ZF2 они создают два файла php под /model под названием Album.php и AlbumTable.php. Я подумал, что это моя папка /Entity. Правильно ли это передача? Имеет ли каталог /Entity визуализировать /model не нужно?

Общее, что я пытаюсь сделать, это настроить эту структуру так, чтобы она работала, и я смогу научиться там, но сейчас я застрял! Любые полезные ответы или указатели на полезные ресурсы будут высоко оценены.

Спасибо.

ответ

1

ZF2 следует за стандартом PSR-0, который также улучшает возможность взаимодействия других модулей фреймов с ZF2. Чтобы узнать больше о стандарте PSR-0, посмотрите здесь: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md

В вашем примере выше упоминания пользователя вы, скорее всего, оставите пользователя в своем собственном модуле из-за природы «пользователь». Пользователь просто содержит класс для представления пользователя или включает в себя перехваты для авторизации и аутентификации и т. Д.? Также как обрабатываются маршруты? Хотя пользователь может показаться простым на первый взгляд, это обычно то, что помещено в его собственный модуль.

И это значит, что вы можете повторно использовать/делиться своим модулем с другими. Обычно, когда я создаю приложение, он будет перемещен в несколько модулей в зависимости от того, где подходит функциональность. Затем между модулями, если мне нужен доступ к другому модулю, я буду использовать локатор службы для доступа к этим методам.

Например, в модуле приложения я могу обратиться к первому имени пользователя, я могу позвонить в службу пользовательского модуля, чтобы затем показать мне данные пользователя. Это значительно упрощает ваш код.

Чтобы ответить на ваши вопросы прямо, хотя:

  1. У меня есть два «Вид» каталоги в данный момент, почти уверен, что это wrong..which один является правильным, если либо?

На основе вашей структуры размещенных каталогов в представлении "ZFSekeleton" выглядит только каталог верхнего уровня верхнего уровня.

  1. В учебнике ZF2 они создают два файла php под моделью Album.php и AlbumTable.php. Я подумал, что это папка my/Entity. Правильно ли это передача? Имеет ли файл/Entity каталог/модель не нужно?

Технически вы можете разместить свою бизнес-логику в любом месте, если она соответствует стандартам пространства имен/psr-0. Кроме того, нет никаких реальных требований, хотя то, что важно для вас, использует кодер, так это то, что вы улучшаете читабельность вашего кода, или вы не сможете быстро добраться.

Я обычно хотел отделить мои папки в исходные тексты, как так:

Контроллеры Модели Адаптеры Услуги Entities

Где контроллеры, очевидно, контроллеры для ZF2. Модели содержат некоторую бизнес-логику для контроллеров или классов. Адаптеры - это адаптеры аутентификации, адаптеры баз данных и т. Д. Услуги - это классы локатора сервисов для других модулей и текущего модуля для работы. Объекты - это мои представления данных.

Каждому свое, но это имеет смысл для меня. Надеюсь, это поможет.

+0

Благодаря Воле, кривая обучения перехода на MVC является пугающим, даже для программиста хорошо разбирается в процедурном PHP. Поэтому я думаю, основываясь на том, что вы говорите, сохраняйте приложение как можно более модульным !? Чтобы ответить на ваш вопрос re Пользователи, изначально класс должен был определить пользователя и обновить db, чтобы сохранить их характеристики, но позже может быть использован для аутентификации и т. Д. Я сделаю еще некоторое чтение в службах модулей. – anewvision

+0

Добро пожаловать, у zf2 определенно есть большая кривая обучения, и документация не сильно ударила или пропустила. Большим является соответствие psr-0 и запоминание пространств имен в классах. Помимо каталога контроллеров, остальная часть именования не имеет большого значения то, что вы называете другими папками, которые содержат вашу бизнес-логику, если они содержат правильные пространства имен. И получить пользу от zf2 classmap автозагрузчик сэкономит вам много головных болей по сравнению с стандартным автозагрузчиком –

1

Хорошо написанный и красиво оформленный вопрос. Не смотрите слишком часто.

  1. Более высокий уровень является правильным. Тот, который находится на том же уровне, что и src. Все под src будут файлами классов. Таким образом, они следуют стандарту PSR-0, каждый файл содержит excatly один класс и т. Д. Таким образом, вы не хотите, чтобы какие-либо просмотры там.
  2. Кажется довольно хорошим быть, но я использую Doctrine вместо ORM ZF2, я не могу точно сказать. Я могу вам сказать, что вам не нужен каталог model, и это, вероятно, поместит все ваши объекты внутри Module\Entity. Так что это абсолютно правильно.

В целом, я бы сказал вам это: Стик с config, src, view папки. Это то, что нравится ZF2, и это то, что ожидают от любого другого разработчика ZF2 от модуля ZF2. Не зацикливайтесь на условностях внутри вашей папки src. Вы можете в значительной степени поместить свой материал туда, где хотите. Если у вас есть достойная IDE (например, PhpStorm), для перемещения или переименования классов потребуется всего несколько секунд. Просто пройдите через некоторые модули ZF2 в GitHub и попытайтесь сопоставить то, какие группы или иерархии вы видите чаще всего.

И вот несколько слов о разделении модулей: я бы сказал, что это хорошая практика, чтобы попытаться сломать ваш проект в модули как можно больше, если вы думаете, что они могут жить отдельно. Например: у вас есть интернет-магазин с множеством продуктов и функцией поиска. Теперь задайте себе следующий вопрос: «Нужны ли продукты функция поиска?» Нет. Продукты могут жить без него. Таким образом, вы добавляете функцию поиска в свой собственный модуль ProductSearch. Может ли сообщения в блоге жить без их комментариев? Да. Создайте модуль Blog и модуль BlogComment.

Вся структура проекта - это то, о чем я много думал, когда начинал с ZF2. Поэтому, если у вас есть еще вопросы, просто прокомментируйте, и я попытаюсь обновить свой ответ.

+0

Спасибо Rudolph, очень полезный ответ и спасибо, заметив, что я взял время, чтобы убедиться, что вопросы были написаны правильно! Я вижу из обоих ответов, которые у меня есть, больше разделения, тем лучше. А также, что ZF2 открыт для большей интерпретации/гибкости, чем я думал о '/ src' – anewvision

Смежные вопросы