Тема: зрозуміти MVC
доброго дня.
прошу навести приклади побудови на шаблоні MVC елементарного сайту БЕЗ ЗАСТОСУВАННЯ ООП.
(тобто подібне на таке http://php-html.net/tutorials/model-vie … er-in-php/ , але без класів, інкапсуляцій і т.п.)
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → PHP → зрозуміти MVC
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
доброго дня.
прошу навести приклади побудови на шаблоні MVC елементарного сайту БЕЗ ЗАСТОСУВАННЯ ООП.
(тобто подібне на таке http://php-html.net/tutorials/model-vie … er-in-php/ , але без класів, інкапсуляцій і т.п.)
Побудувати ГУЙ без застосування ООП дуже складно. ООП на гуях і тримається, тому шаблон мвц без ооп це теж саме що і програмування гуїв для вінди на асемблері. Це недоречно і крізь отой неООПшний код все одно буде проглядатися ООП, бо ООП це не оператор "класс" або ж модифікатор "протект", це перш за все парадигма програмування, яку можна хоч на брайнфаці реалізувати.
чому така категоричність, хз.
ок
index.php
<?
require_once(dirname(__FILE__).'/controller.php');
require_once(dirname(__FILE__).'/model.php');
require_once(dirname(__FILE__).'/view.php');
в індексі розрулюєте роути, спрямовуєте до контроллера, в контроллері використовуєте функції з моделі в моделі описуєте функції для взаємодії з бд, в вюсі показуєте данні.
Но мвс без ооп на стілки бредово, шо гладіолус .
Майже без ООП, лише один клас Model, але в принципі можна було би просто функції використати. Заатачив. Простенький сайт
Майже без ООП, лише один клас 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.
є якісь правила сетапу чи дебаг запускати?
в .htacess можливо потрібно щось поправити.. Та і бекап бази треба.
Накидав UML діаграму, сорі якщо я це зробив не по стандартам але думаю що зрозуміло.
Схему Патрона я б назвав заплутаною так як незрозуміло як Контроллер звязаний з вюшкою.
Все таки ця картинка краще підходить.
Можливо на простому прикладі вам буде краще зрозуміло.
Вистава:
Дія відбувається на просторах українського інтернету.
Дійові герої: Контроллер, Модель, Вюшка, Користувач
Дія перша:
Користувач тихо заходить на сайт
Користувач: Контроллер привіт;)
Контроллер: Превед. Я тебе не знаю! Вюшка (підмогруючи), покажи форму для залогінення. Що б ми дізнались хто це і що з ним робити.
Вюшка: Ось тобі форма, два інпути для введення логіна і паролю.
*Кінець першої дії
Дія друга:
Користувач тихо заповнює форму повільно натискаючи на клавіатурі. Користувач жмакає кнопку сабміт.
Користувач: Як не знаєш? Так ось же я. Дімка, ось мій пароль ***
Контроллер: Зараз я тебе перевірю, всі ви кажете Дімка а потім виявляється що ви далеко не Дімка.
Контроллер підготовлює дані і швидко підходпить до бази даних. Запитуючи у неї чи є така модель з назвою Дімка і паролем ***. В базі даних на щастя був такий запис.
Контроллер: Хехе) Таки так ти Дімка. Є така модель Вюшка, покажи цьому Дімці що він останній раз залогінювався два тижні назад.
Вюшка бере інший дизайн сторінки і на екрані швидко проявляється напис:
Дімка останній раз ти залогінювався на сайт два тижні назад
*Кінець вистави
Взагальному так і є:
Контроллер оброблятє запит, підготовлює дані,в итягує необхідні моделі якщо потрібно, і передає дані до Вюшки. Вона займається тілкьи відображенням.
Головною фішкою є це розмежування дій. Тобто не варто писати echo $user->name в контроллері або у моделі, тільки у вюшці. Кожен кусок коду, має бути на своєму місці.
Дякую за увагу.
Контроллер не звязаний з вюшкою. Контроллер може нічого не знати про вюшки а вюшки про контроллер)))) І взагалі, реалізацій дуже багато, головне зрозуміти суть. І на рахунок моделей вам funivan. Модель - абстрактне поняття, це не обов'язково об'єкт який представляє якусь сутність. Є моделі сетапери, моделі ресурси, моделі колекції, моделі які представляють сутність і т.д.
Я про моделі написав тому що автор теми хотів зрозуміти MVC без ООП і він просто може не хоче поки що думати про те що таке модель.
Контроллер не звязаний з вюшкою. Контроллер може нічого не знати про вюшки а вюшки про контроллер)))) І взагалі, реалізацій дуже багато, головне зрозуміти суть.
Ну реалізацій багато але як на мене у більшості випадків контроллер знає як мінімум назву вюшки. Якщо не вюшка тоді Теми. Але суть одна. Контроллер знає яку вюшку зараз відображати.
У вас на схемі все на інклудах. Ну нехай. Але є безліч випадків коли у вас вюшка не буде відповідати $controller.'/'.$action.'.html'; Як тоді ви задаєте яку вюшку відображати? Я задаю це у контроллері. А ви де задаєте? (Якщо можете надайте код )
Моє бачення: контроллер як мінімум знаєш імя вюшки або імя теми. А взагалі у більшості випадків і одне і інше.
І на рахунок моделей вам funivan. Модель - абстрактне поняття, це не обов'язково об'єкт який представляє якусь сутність. Є моделі сетапери, моделі ресурси, моделі колекції, моделі які представляють сутність і т.д.
У вас дещо запутане. Модель це сутність тут беззаперечно . Жирним шрифтом я підкреслив що ви заперечуєте потім підтверджуєте)
Згідний що є моделі колекції і тд) Але ж автор теми старається зрозуміти основи
p.s. Якщо можете в приват напишіть про "моделі сетапери, моделі ресурси" або просто оригінальні назви дайте що б я погугли Дякую.
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";
Це сама примітивна реалізація. Що тут не зрозуміло?
Це сама примітивна реалізація. Що тут не зрозуміло?
Тут все ясно. У самій примітивний реалізації контроллер з вюшкою не звязані. Згідний. Не у самій примітивний - звязаний)
автор теми старається зрозуміти основи
він хотів взагалі БЕЗ ООП!!! Через те я не починав щось писати про об'єкти.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися