2010-03-14 1 views
9

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

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

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

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

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

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

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

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

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

Bounty

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

ответ

7

Я бы использовал модуль auth, который поставляется с коханой для входа. Это даст вам таблицу ролей, в которой вы можете настроить возможные варианты разрешений и связать их с пользователями позже. После этого вы можете проверить внутри __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 
} 

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

+0

Cheers @antpaw. Yup, Auth и ORM выглядят очень интересными, одна из причин, почему меня так интересует Kohana. Я в основном ищу примеры в реальном мире о том, как классифицировать представления и другие файлы, чтобы избежать огромных конгломератов моделей и таких на данный момент, знаете ли вы что-нибудь в этом направлении? –

+0

Кстати, @antpaw, я googled для xCSS на днях, индекс Google имеет antpaw.org в качестве первого попадания при его поиске: http://www.google.de/#hl=ru&source=hp&q=xcss&aq = f & aqi = g4g-s1g1g-s3g1 & aql = & oq = & fp = a685f6127e795e5e нет прямой ссылки на xCss от antpaw.org. Но это, вероятно, исправит сам. Отличный сайт Flash, кстати, мне нравится эффект наведения. –

+0

хорошо организованный вид на самом деле простой новый вид («материал/файл») будет искать файл file.php в папке с материалами. Я всегда называю свои папки просмотра, такие как контроллер, где они используются, и файлы, такие как методы, из которых они вызываются. дайте вам свой почтовый адрес, и я могу отправить вам код, который формирует приложение, похожее на ваше. – antpaw

12

Много вопросов, чтобы ответить здесь, я постараюсь изо всех сил.

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

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

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

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

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

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

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

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

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

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

Вы знаете какие-нибудь хорошие ресурсы на создание сложных приложений с Кохана?

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

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

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

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

Например:

Controller_Mathew extends Controller 

будет искать файл под названием mathew.php в:

classes/controller 

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

Controller_Mathew_Davies extends Controller 

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

classes/controller/mathew/ 

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

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