Автор Тема: Въпрос относно MVC  (Прочетена 1944 пъти)

Espectro

  • Участници
  • ***
  • Публикации: 4
    • Профил
Въпрос относно MVC
« -: Jun 17, 2011, 23:53 »
Здравейте въпроса ми е свързан с конкретен проект който разработих без да съм запознат с правилата и извискванията покрай MVC, но проекта не е голям и мисля, че с малко промени ще мога го променя според правилата.
Ще кажа какво мисля, да направя а от вас ще се радвам да получа отговори дали така е най-правилно и най-добре. В проекта имам класове от типа на post_class..cat_class и.т.н. в тях имам главно селектиране и изпращане на информация към БД затова мисля да ги направя модели като изнеса логиката от тях в контролери и съответно във всеки контролер да include модел-а към него и така когато във index.php напеример ми трябва да изведа постовете викам модела който държи post_class.php и извеждам данните.
Дано да сте ме разбрали цялата идея се върти около това, че искам да използвам MVC модела-а ( с който не съм особенно наясно ) в моя проект :)
Активен

koleto

  • Напреднали
  • *****
  • Публикации: 52
  • Distribution: Ubuntu
  • Window Manager: Gnome
    • Профил
    • WWW
Re: Въпрос относно MVC
« Отговор #1 -: Jun 21, 2011, 01:21 »
Здравей. Щом в post_class..cat_class и.т.н. има главно селектиране и изпращане на информация към БД е добре да ги направиш модели. Идеята е че имаш контролери, които ти изпълнява някакви действия. Примерно post_class ще ти е модела. Контролера може да си го кръстиш post_controller и в него да имаш отделни методи за добавяне, изтриване, редактиране и преглеждане на записи. Там може да си изнесеш част от логиката която се отнася до обработка на потребителски заявки - като да събираш POST например. Цялата логика, която се отнася до данните, трябва да си седи в модела. Така идва ред и на третия компонент на MVC - view или изгледи. Идеята е че имаш един главен изглед, които се казва layout. В него ти е head частта на html-a и други неща, които са еднакви по всички страници. Отделно за всяко действие в контролера си имаш по един view файл. В него имаш само html и проста логика като if, foreach и т.н.

Когато се извика index.php не трябва да извикваш модела. index.php трябва да взима потребителската заявка и да извиква необходимия контролер със съответния метод.

Ако index.php получи заявка http://example.com/index.php?q=post/create той трябва да я разбере. Обърни внимание на post/create. Това означава че потребителя иска да му се зареди контролера post в който има метод create.
Активен

Поражение не съществува, докато човек не се признае за победен!

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Re: Въпрос относно MVC
« Отговор #2 -: Jun 25, 2011, 09:15 »
Зависи за какъв тип MVC става въпрос: Ако е с Framework, то означава че трябва да се придържаш към дадените за него правила. Ако си го правиш със собствено MVC, тогава долу-горе логиката е такава:

model/categories.php
Код
GeSHi (PHP):
  1. <?php
  2. Class Categories {
  3.        public $output;
  4.        function addCategory($catname) {
  5.            mysql_query('INSERT ...');
  6.            ...
  7.            $this->output = 'Някакво съобщение за грешка/успех';
  8.            return (bool)
  9.        }
  10.  
  11.        function editCategory((int)$catid) {
  12.            mysql_query('UPDATE ...');
  13.            return (bool)
  14.        }
  15. }
  16.  
  17. ?>

controller/categories.php
Код
GeSHi (PHP):
  1. ...
  2. if ($submited) {
  3.       if ($action == 'add') {
  4.            showMessage(Categories->add(addslashes(trim($_POST['catname'))), Categories->output);
  5.       } else if ($action == 'edit') {
  6.            showMessage(Categories->edit($_POST['catid'), Categories->output);
  7.       }
  8. }
  9.  

view/takecategory.php (тук може да се разбие на няколко файла, а може и в един)

Код
GeSHi (PHP):
  1. function showMessage(bool $return, $text) {
  2. // тук вече при true може да е съобщение със зелени букви, при false - с червени... може да се дефинира и някой CSS клас и тн (козметични промени)
  3. }
  4.  
Активен

Espectro

  • Участници
  • ***
  • Публикации: 4
    • Профил
Re: Въпрос относно MVC
« Отговор #3 -: Jun 25, 2011, 21:12 »
Става въпрос за собствено MVC балгодаря за насоките който ми дадохте ако имам въпроси пак ще питам :)
Активен