Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
0 / 0 / 1
Регистрация: 30.04.2014
Сообщений: 13

MVC передача данных между моделью и представлением

30.04.2014, 23:42. Показов 3621. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Однако Здрасьте!
В целях обучения ООП, решил переписать один прект с использованием mvc. В принципе все понятно, но есть некоторые загвоздки которые хочется сгладить. Получается что контроллер управляет моделью и представлением, так вот, как более элегантно передавать данные из модели в представление. Возможно код скажет больше, чего я хочу, на данный момент мне в голову пришла такая идея:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Model {
    protected $title;
    function __construct() {
    $this->_Run();
    }
    function _Run() {
        $total = "hello"."world";
    $this->title = $total;
    }
    function GetAllVars() {
    return get_object_vars($this);
    }
}
class View {
    function render() {
    require("template.php");
    }
    function __set($key, $val) {
    $this->$key = $val;
    }
}
class Controller {
    function Exec() {
    $model = new Model();
    $view = new View();
    $vars = $model->GetAllVars();
    foreach($vars as $var=>$key) {
        $view->$var = $key;
    }
        $view->render();
    }
}
Насколько критичен этот код в плане оптимизации и безопасности, к слову все ваши комментарии и пожелания.
Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.04.2014, 23:42
Ответы с готовыми решениями:

CodeIgniter - передача данных из форм в БД / MVC
Есть проблема, видимо не совсем понимаю как надо правильно передавать данные в MVC из формы в контроллер, чтобы оттуда передать в модель и...

Передача некоторых данных в шаблон MVC
У меня таблица User с данными: name mail bla bla bla, и мне понадобилось выводить name на каждой странице сайта. Как правильно реализовать...

spring-mvc передача данных из контроллера в view
у меня возникла проблема. пробую писать жалкое подобие сайта на Java. и мне необходимо передавать данные между контроллером и вьюхой....

2
268 / 268 / 109
Регистрация: 22.08.2013
Сообщений: 907
01.05.2014, 11:20
legkoe_poxmelye, зачем нужен магический метод __set в View? Разве так просто свойства не будут устанавливаться?

PHP
1
2
3
    foreach($vars as $var=>$key) {
        $view->$var = $key;
    }
Не думаю что нужно в контроллере проделывать это. Почему бы просто не передать $model->GetAllVars() в качестве аргумента к render()? Да и потом, в template.php несколько неудобно писать каждый раз $this->переменная, можно сделать extract(массив переменных) в методе подключения представления (будут созданы переменные из массива).

Добавлено через 2 минуты
https://github.com/Razip/liteF... /index.php
https://github.com/Razip/liteF... /Model.php
https://github.com/Razip/liteF... roller.php

Можете изучить, но возможно несколько сложновато. Если что — пишите, помогу разобраться.
0
0 / 0 / 1
Регистрация: 30.04.2014
Сообщений: 13
01.05.2014, 11:58  [ТС]
Razip Хорошо, спасибо!
Насчет extract() - это мысль, Вот здесь еще немного модифицировал метод GetAllVars():
PHP
1
2
3
4
5
6
7
8
9
10
11
    function GetAllVars() {
    $vars = array();
    $reflect = new ReflectionClass($this);
    $props = $reflect->getProperties(ReflectionProperty::IS_PUBLIC);
    foreach($props as $prop) {
        $vars[$prop->getName()] = $prop->getValue($this);
    }
    return $vars;
    }
То есть переменные берутся те которые объявлены в public, возможно так безопаснее.
Нужно будет изучить поближе твой форк.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.05.2014, 11:58
Помогаю со студенческими работами здесь

Модель MVC, передача данных из контроллера в вид?
как правильно организовать передачу данных из контроллера в вид? как-то у меня в голове не укладывается как это сделать, напр. есть: ...

Dropdownlist, MVC, MySql передача данных из коллекции
Доброго времени суток, такой вопрос. Есть коллекция куда передается данные с таблицы. Как можно сделать dropdownlist из элементов этой...

Передача данных в представление ASP.NET MVC 5
Добрый день уважаемые посетители форума, возник вопрос по ASP.NET MVC 5. У меня есть база данных, имеется таблица с элементами, у которой...

Передача ссылки в конструктор (передача данных между формами)
Из темы "Ответы на 7 самых частых вопроса по WinForms" Реализовал метод № 2.3 без проблем, а вот 2.4 не получается( вот текст из той...

Дистанция между колижн моделью и объектом
Мне нужно найти расстояние между объектами для отрисовки прицела у танка distanceToHitGun = (Vector3.Distance(Terrein.position...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru