1

Тема: зрозуміти MVC

доброго дня.

прошу навести приклади побудови на  шаблоні MVC елементарного сайту БЕЗ ЗАСТОСУВАННЯ ООП.
(тобто подібне на таке http://php-html.net/tutorials/model-vie … er-in-php/ , але без класів, інкапсуляцій і т.п.)

2 Востаннє редагувалося d4rkc10ud (24.10.2012 17:13:05)

Re: зрозуміти MVC

Побудувати ГУЙ без застосування ООП дуже складно. ООП на гуях і тримається, тому шаблон мвц без ооп це теж саме що і програмування гуїв для вінди на асемблері. Це недоречно і крізь отой неООПшний код все одно буде проглядатися ООП, бо ООП це не оператор "класс" або ж модифікатор "протект", це перш за все парадигма програмування, яку можна хоч на брайнфаці реалізувати.

Світ врятують краса та масові розстріли
Лепей жывы сабака, чымся здохлы леў
Хто до нас із томагавком прийде, той од томагавка і томагавкнеться

3 Востаннє редагувалося miroslav.chandler (24.10.2012 17:40:32)

Re: зрозуміти MVC

чому така категоричність, хз.
ок

index.php
<?
require_once(dirname(__FILE__).'/controller.php');
require_once(dirname(__FILE__).'/model.php');
require_once(dirname(__FILE__).'/view.php');

в індексі розрулюєте роути, спрямовуєте до контроллера, в контроллері використовуєте функції з моделі в моделі описуєте функції для взаємодії з бд, в вюсі показуєте данні.

Но мвс без ооп на стілки бредово, шо гладіолус :D.

pew pew :D
Блоґ

4

Re: зрозуміти MVC

Майже без ООП, лише один клас Model, але в принципі можна було би просто функції використати. Заатачив. Простенький сайт :)

Post's attachments

s.zip 45.07 kb, 161 downloads since 2012-10-24 

5

Re: зрозуміти MVC

Replace написав:

Майже без ООП, лише один клас Model, але в принципі можна було би просто функції використати. Заатачив. Простенький сайт :)

Server error
The website encountered an error while retrieving http://eclipse/s/. It may be down for maintenance or configured incorrectly.
Here are some suggestions:
Reload this webpage later.
HTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfill the request.

є якісь правила сетапу чи дебаг запускати?

6

Re: зрозуміти MVC

в .htacess можливо потрібно щось поправити.. Та і бекап бази треба.

7

Re: зрозуміти MVC

Накидав UML діаграму, сорі якщо я це зробив не по стандартам але думаю що зрозуміло.
http://highlife.pp.ua/wp-content/uploads/2012/10/mvc.jpg

Щоб зрозуміти рекурсію потрібно спочатку зрозуміти рекурсію.
int fac(int n) { return n < 2 ? 1 : n*fac(n-1); }
Подякували: Replace1

8

Re: зрозуміти MVC

тіки не інклудьте по не фільтрованій назві, як в діаграмі :)

pew pew :D
Блоґ

9

Re: зрозуміти MVC

Схему Патрона я б назвав заплутаною так як незрозуміло як Контроллер звязаний з вюшкою.

http://php-html.net/tutorials/wp-content/uploads/2009/08/mvc-collaboration.png

Все таки ця картинка краще підходить.

Можливо на простому прикладі вам буде краще зрозуміло.



Вистава:
Дія відбувається на просторах українського інтернету.
Дійові герої: Контроллер, Модель, Вюшка, Користувач

Дія перша:

Користувач тихо заходить на сайт

Користувач: Контроллер привіт;)
Контроллер: Превед. Я тебе не знаю! Вюшка (підмогруючи), покажи форму для залогінення. Що б ми дізнались хто це і що з ним робити.
Вюшка: Ось тобі форма, два інпути для введення логіна і паролю.
*Кінець першої дії


Дія друга:

Користувач тихо заповнює форму повільно натискаючи на клавіатурі. Користувач жмакає кнопку сабміт.

Користувач: Як не знаєш? Так ось же я. Дімка, ось мій пароль ***
Контроллер: Зараз я тебе перевірю, всі ви кажете Дімка а потім виявляється що ви далеко не Дімка.
Контроллер підготовлює дані і швидко підходпить до бази даних. Запитуючи у неї чи є така модель з назвою Дімка і паролем ***. В базі даних на щастя був такий запис.
Контроллер: Хехе) Таки так ти Дімка. Є така модель ;) Вюшка, покажи цьому Дімці що він останній раз залогінювався два тижні назад.
Вюшка бере інший дизайн сторінки і на екрані швидко проявляється напис:
Дімка останній раз ти залогінювався на сайт два тижні назад
*Кінець вистави


Взагальному так і є:
Контроллер оброблятє запит, підготовлює дані,в итягує необхідні моделі якщо потрібно, і передає дані до Вюшки. Вона займається тілкьи відображенням.

Головною фішкою є це розмежування дій. Тобто не варто писати echo $user->name в контроллері або у моделі, тільки у вюшці. Кожен кусок коду, має бути на своєму місці.
Дякую за увагу.

10

Re: зрозуміти MVC

Контроллер не звязаний з вюшкою. Контроллер може нічого не знати про вюшки а вюшки про контроллер)))) І взагалі, реалізацій дуже багато, головне зрозуміти суть. І на рахунок моделей вам funivan. Модель - абстрактне поняття, це не обов'язково об'єкт який представляє якусь сутність. Є моделі сетапери, моделі ресурси, моделі колекції, моделі які представляють сутність і т.д.

Щоб зрозуміти рекурсію потрібно спочатку зрозуміти рекурсію.
int fac(int n) { return n < 2 ? 1 : n*fac(n-1); }

11

Re: зрозуміти MVC

Я про моделі написав тому що автор теми хотів зрозуміти MVC без ООП і він просто може не хоче поки що думати про те що таке модель.

Щоб зрозуміти рекурсію потрібно спочатку зрозуміти рекурсію.
int fac(int n) { return n < 2 ? 1 : n*fac(n-1); }

12

Re: зрозуміти MVC

Контроллер не звязаний з вюшкою. Контроллер може нічого не знати про вюшки а вюшки про контроллер)))) І взагалі, реалізацій дуже багато, головне зрозуміти суть.

Ну реалізацій багато але як на мене у більшості випадків контроллер знає як мінімум назву вюшки. Якщо не вюшка тоді Теми. Але суть одна. Контроллер знає яку вюшку зараз відображати.
У вас на схемі все на інклудах. Ну нехай. Але є безліч випадків коли у вас вюшка не буде відповідати $controller.'/'.$action.'.html'; Як тоді ви задаєте яку вюшку відображати? Я задаю це у контроллері. А ви де задаєте?  (Якщо можете надайте код ;))
Моє бачення: контроллер як мінімум знаєш імя вюшки або імя теми. А взагалі у більшості випадків і одне і інше.

І на рахунок моделей вам funivan. Модель - абстрактне поняття, це не обов'язково об'єкт який представляє якусь сутність. Є моделі сетапери, моделі ресурси, моделі колекції, моделі які представляють сутність і т.д.

У вас дещо запутане.  Модель це сутність тут беззаперечно ;). Жирним шрифтом я підкреслив що ви заперечуєте потім підтверджуєте)
Згідний що є моделі колекції і тд) Але ж автор теми старається зрозуміти основи ;)


p.s. Якщо можете в приват напишіть про "моделі сетапери, моделі ресурси" або просто оригінальні назви дайте що б я погугли ;) Дякую.

13

Re: зрозуміти MVC

index.php

$controller = $_GET["controller"]; // назва контроллера
$action = $_GET["action"];// назва екшна
$param = $_GET["param"]; // параметр

/*
* підключаємо файл з котроллером
*/
require_once "Controllers/".$controller.".php"; 
/*
* виклик екшна
*/
$data = $action($param); // $data = action1($param);
/*
* показуємо дані ($data) у в'юшці
*/
require_once "Views/".$controller."/".$action.".phtml";

Це сама примітивна реалізація. Що тут не зрозуміло?

Щоб зрозуміти рекурсію потрібно спочатку зрозуміти рекурсію.
int fac(int n) { return n < 2 ? 1 : n*fac(n-1); }

14

Re: зрозуміти MVC

Це сама примітивна реалізація. Що тут не зрозуміло?

Тут все ясно. У самій примітивний реалізації контроллер з вюшкою не звязані. Згідний. Не у самій примітивний - звязаний)

15

Re: зрозуміти MVC

автор теми старається зрозуміти основи

він хотів взагалі БЕЗ ООП!!! Через те я не починав щось писати про об'єкти.

Щоб зрозуміти рекурсію потрібно спочатку зрозуміти рекурсію.
int fac(int n) { return n < 2 ? 1 : n*fac(n-1); }
Подякували: funivan1