1

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

доброго дня.

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

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

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

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

3 Востаннє редагувалося miroslav.chandler (24.10.2012 16: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.

4

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

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

Post's attachments

s.zip 45.07 kb, 448 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

Подякували: Replace1

8

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

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

9

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

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

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

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

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



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

Дія перша:

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

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


Дія друга:

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

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


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

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

10

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

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

11

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

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

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";

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

14

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

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

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

15

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

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

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

Подякували: funivan1