Учебник MVC, который не полагается на структуру?

Я хочу изучить шаблон архитектуры MVC, но пока я не хочу входить в рамки, такие как Rails или Django. Сначала я хочу понять концепцию и написать простой код в моей знакомой среде, которая, как представляется, является PHP/HTML/CSS/MySQL. Мне не обязательно нужен учебник, основанный на PHP, поскольку я понимаю много разных языков. И я не хочу устанавливать какие-либо фреймворки или API или библиотеки. Я просто хочу научиться думать в MVC и применять его к своим проектам. Любые предложения?

Ответ 1

Почти каждая структура делает MVC по-другому, поэтому вы можете стать еще более запутанными. Общие принципы MVC очень просты: "Модель - состояние, вид реагирует на модель, контроллер реагирует на просмотр, контроллер меняет модель". Модель, представление и контроллер - это понятия - они все, что вы чувствуете. Классы, группы классов, экземпляры классов с файлами конфигурации XML, вы называете это.

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

Ответ 2

MVC в основном просто разбивает ваш код на модель, которая обрабатывает данные, вид, который отображает данные, и контроллер, который передает данные из модели в представление.

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

Быстрый пример в python примера MVC с структурированным Python script. Не обязательно "лучшие практики", но он работает и довольно прост:

class Model:
    def get_post(self, id):
        # Would query database, perhaps
        return {"title": "A test", "body": "An example.."}

class Controller:
    def __init__(self):
        self.model = Model()
        self.view = View()

    def main(self):
        post = self.model.get_post(1)
        self.view.display(post)

class View:
    def display(self, item):
        print "<h1>%(title)s</h1>\n%(body)s" % item

c = Controller()
c.main()

Ответ 3

Одним из наиболее интересных ресурсов являются оригинальные статьи Трюгве Реенскауга. Wikipedia также содержит много агностической информации о языке MVC.

Ответ 4

В дополнение к ответу Sander, я бы сказал, что большинство фреймворков путают фронт-контроллер и MVC. Это действительно две совершенно разные концепции, но они часто присутствуют в рамках. Поэтому следите за этим.

Ответ 5

Посмотрите это описание, пример и диаграмма, которые охватывают основы MVC.

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

Ответ 6

Не спрашивайте меня, как, но я наткнулся на эту запись из превосходной вики по теме шаблонов дизайна:

http://www.c2.com/cgi-bin/wiki?ModelViewController

Много интересных обсуждений и указателей на различные ресурсы.

И мне потребовалось всего шесть дней, чтобы найти его!

Ответ 7

Попробуйте эту замечательную статью: Нетрамовая инфраструктура PHP MVC. Это не заменяет введение в шаблон MVC, но предоставляет простые и практические примеры.

Ответ 8

Вы можете попробовать этот PHP MVC Tutorial. Он хорошо написан, очень светлый, содержит только основные сведения, и вы можете найти код на sourceforge.

Ответ 9

Я не понял шаблон MCV, пока не попробовал. Если вы знакомы с PHP, вы можете попробовать http://cakephp.org, его фреймворк PHP, в котором используется большинство парадигм RoR.

Ответ 10

Основным преимуществом MVC является разделение проблем. Когда вы пишете код, и если вы не будете осторожны, это может стать большим беспорядком. Поэтому знание того, как ставить Модели, Виды и Контроллеры в разных "силосах", экономит ваше время в долгосрочной перспективе. Любая стратегия хороша.

Итак, вот моя:

  • модели - это файлы, найденные в /lib в дереве проекта
  • представления - это файлы, заканчивающиеся на .html в дереве проекта Контроллеры
  • - это URL-адреса в <form> атрибуты действия

Ответ 11

Знай, что поздно, но я уверен, что люди придут позже с тем же вопросом.

Я думаю, что очень хороший пример кода выше, лучше, чем YMMV:

#!/usr/bin/python
class Model:
  def get_post(self):
    return {"title":"A test","body":"An example.."}

class View:
  def display(self,items):
    print 'Title:',items['title'],'\n'+'Body:',items['body']

class Controller:
  def __init__(self):
    self.model=Model()
    self.view=View()

  def main(self):
    post=self.model.get_post()
    self.view.display(post)

mvc=Controller()
mvc.main()

Вот еще один пример использования наследования, который может быть очень полезен в python/php.....

#!/usr/bin/python3
class Control:
  def find(self,user):
    return self._look(user)

  def _look(self,user):
    if user in self.users:
      return self.users[user]
    else:
      return 'The data class ({}) has no {}'.format(self.userName(),user)

  def userName(self):
    return self.__class__.__name__.lower()

class Model(Control):
  users=dict(one='Bob',two='Michael',three='Dave')

class View():
  def user(self,users):
    print(users.find('two'))

def main():
  users=Model()
  find=View()
  print('--> The user two\ "real name" is:\n')
  find.user(users)

if __name__=="__main__":
  main()

Если это имеет смысл, пойдите в django теперь, когда вы готовы. Просто прочитайте бесплатную книгу если это имеет смысл, вы быстро ее пройдете. Ваше право, хотя вы должны быть в состоянии знать о парадигмах ООП и MVC перед использованием django, поскольку оно построено и используется через эти парадигмы.

Как вы видите, это не сложно, это всего лишь один из многих способов сохранить код в порядке.

Это объясняет MVC в django

Ответ 12

Вот несколько руководств, которые не относятся к рамкам:

Ответ 14

Этот учебник позволит вам начало и конец строительства MVC. Объект не soley для создания готовой структуры MVC, хотя это произойдет, но продемонстрировать, как работает MVC, и некоторые из концепции, лежащие за ним.

Ответ 15

На сегодняшний день лучший учебник MVC, который я когда-либо видел: http://www.youtube.com/watch?v=Aw28-krO7ZM (часть 1, не пропустите другие части!), код можно найти здесь: http://jream.com/lab/open-source

Очень симпатичный парень с чувством к чему-то-чему-то научиться.