Как организовать бизнес-логику в проекте Kohana 3

Мне нужны советы, руководства и ссылки о том, как настроить веб-приложение среднего размера с помощью Kohana 3. Раньше я реализовал шаблоны MVC, но никогда не работал с формализованной средой MVC, поэтому я все еще не понимаю терминология - игра с базовыми примерами, построение представлений и шаблонов и т. д.

Я продвигаюсь довольно хорошо, но я хочу создать реальный веб-проект (один из моих собственных, который я планировал уже довольно давно) в качестве учебного объекта.

Лучше всего я учусь на примере, но документация на основе примеров для Kohana 3 сейчас немного скудна - они сами так говорят на сайте. Хотя я не беспокоюсь об изучении фреймворка по мере продвижения, я хочу убедиться, что база кода правильно структурирована с самого начала - то есть контроллеры хорошо разделены, названы хорошо и в соответствии со стандартами, и, что наиболее важно, бизнес-логика разделены на модели подходящего размера.

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

Предположим, у меня есть весь API, разработанный и уже установленный - список всех предприятий, редактирование бизнеса, список предприятий по названию улиц, создание предложения с входом в систему как бизнес и т. Д., И я просто ищу, как вписать эту функциональность в шаблон MVC и структуру приложения Kohana, которую можно легко расширить.

  • Знаете ли вы реальные примеры приложений с тяжелыми базами данных, таких как каталоги, онлайн-сообщества ... с областью входа, построенной на Kohana 3, предпочтительно с открытым исходным кодом, чтобы я мог посмотреть, как они это делают?

  • Существуют ли соглашения или передовые практики о том, как структурировать расширяемую область входа для конечных пользователей в проекте Kohana, который может обрабатывать не только страницу бизнес-каталога, но и другие продукты на отдельных страницах?

  • Знаете ли вы какие-нибудь хорошие ресурсы по созданию сложных приложений с помощью Kohana?

  • Вы создали нечто подобное и могли бы дать мне рекомендации по структуре проекта?

Награда

Я награждаю @antpaw за то, что он предоставил мне приложение Kohana с некоторой бизнес-логикой, которая дает мне множество примеров. Приветствую @Pixel Developer за отличный вклад - как часто мне хотелось бы разделить награду!


person Community    schedule 14.03.2010    source источник


Ответы (2)


Я бы использовал модуль аутентификации, который поставляется с kohana для входа в систему. Это даст вам таблицу ролей, в которой вы сможете настроить возможные варианты разрешений и связать их с пользователями позже. После этого вы можете проверить внутри __constructor () или action_function () каждого контроллера, имеет ли пользователь требуемую роль, например. с функцией -> has (). Вы также должны использовать модуль ORM, это просто здорово, так как у вас много связей между таблицами. Также очень удобен метод __get () внутри объекта ORM.

Также довольно легко расширить функцию контроллера, установив для нового параметра значение NULL и проверив это в операторе if. например вам нужна только одна функция для редактирования старой записи или добавления новой.

public funciton action_manage($id = NULL)
{
    $entry = ORM::factory('entry', $id); // if id is null a new entry will be returned 
}

Также важно, чтобы вы структурировали представления в подпапки, чтобы избежать беспорядочного каталога представлений.

person antpaw    schedule 14.03.2010
comment
Приветствую @antpaw. Ага, Auth и ORM выглядят очень интересно, и это одна из причин, по которой я так заинтересован в Kohana. В основном я ищу реальные примеры того, как классифицировать представления и другие файлы, чтобы избежать огромных скоплений моделей и тому подобного на данный момент, знаете ли вы что-нибудь в этом направлении? - person Pekka; 15.03.2010
comment
Кстати, @antpaw, на днях я искал в Google xCSS, в индексе Google первым попаданием при поиске является antpaw.org: google.de/ нет прямой ссылки на xCss с antpaw.org. Но это, вероятно, само собой поможет. Кстати, отличный Flash сайт, мне нравится эффект наведения. - person Pekka; 15.03.2010
comment
хорошо организовать представление действительно просто новое представление ('материал / файл') будет искать file.php в папке материала. Я всегда называю свои папки просмотра, например, контроллером, в котором они используются, а файлы - методами, из которых они вызываются. дайте вам свой адрес электронной почты, и я могу отправить вам код, который формирует приложение, похожее на ваше. - person antpaw; 15.03.2010

Здесь много вопросов, я постараюсь изо всех сил.

Знаете ли вы примеры из реальной жизни приложений, "загруженных базами данных", таких как каталоги, онлайн-сообщества ... с областью входа, построенной на Kohana 3, где я мог бы посмотреть, как они это делают?

Есть несколько примеров приложений. Вуди Гилк (основатель Kohana) опубликовал код на своем личном веб-сайте на github. Для области входа он присваивает значение cookie. Kohana 3 / 2.4 подписывает файлы cookie, что делает его безопасным и устраняет необходимость в сеансах. Это может быть не на любой вкус, поэтому вы всегда можете использовать встроенную библиотеку аутентификации, которая использует как сеансы, так и файлы cookie.

Вот еще несколько проектов, которые могут вас заинтересовать:

  • Shindig - облегченный модуль блога для kohana 3
  • Kohanut - расширяемая CMS, написанная на Kohana 3

Существуют ли соглашения или передовые практики о том, как структурировать расширяемую область входа для конечных пользователей в проекте Kohana, который может обрабатывать не только страницу бизнес-каталога, но и другие продукты на отдельных страницах?

Если я правильно вас понял, вы хотите создать окно входа в систему для каждой из этих страниц? Это легко сделать с Kohana 3, поскольку мы можем воспользоваться преимуществом H в HMVC. Сэм де Фрессиине написал статью, подробно описывающую все это, в блоге iBuilding Tech Blog. Масштабирование веб-приложений с помощью HMVC.

Затем вы можете выполнить внутренний запрос к контроллеру входа или действию и выгрузить ответ на страницу просмотра.

$login = Request::factory('login')->execute()->response;

$ login теперь содержит форму входа в систему, которую вы можете разместить где угодно. Вы можете захотеть вернуть другой ответ, если запрос является внутренним, поэтому этот фрагмент кода может быть полезен:

if (Request::instance() !== $this->request)
{
    print 'Internal called made with Request::factory';
}

Знаете ли вы какие-нибудь хорошие ресурсы по созданию сложных приложений с помощью Kohana?

Не будет документации, показывающей, как создавать сложные приложения. Сообщество Kohana считает, что вы разработчик PHP и должны уметь решать эти проблемы самостоятельно. Если вы не можете, тогда вам не следует использовать Kohana.

Вы создали нечто подобное и могли бы дать мне рекомендации по структуре проекта?

Как только вы поймете, как Kohana 3 находит файлы, все станет легко.

|- classes
|-- controller
|-- model
|- views

Например:

Controller_Mathew extends Controller 

Ищет файл с именем mathew.php в:

classes/controller

Подчеркивание можно использовать для указания более глубоких каталогов. Пример:

Controller_Mathew_Davies extends Controller

будет искать файл с именем davies.php в:

classes/controller/mathew/

Как видите, подчеркивания в имени контроллера действуют как разделители каталогов. Это справедливо для моделей и ванильных классов.

person Community    schedule 18.03.2010