asp.net mvc — архитектура mvc в лучших практиках php

Что является лучшей практикой для создания приложения php mvc. Я являюсь разработчиком asp.net, где контроллер связан с представлением. Но я видел в учебнике php mvc, что представление имеет два элемента данных контроллера и тип модели. Представление используется для вызова подходящего контроллера с типом контроллера объекта и модели. view имеет информацию как о контроллере, так и о модели, где контроллер знал только о модели.

class model{
//code..
}
class controller{
priavate $model;//model type object
//code..
}
class view{
private $model;//model type of object
private $controller//controller type of object
//code..
}

Но в asp.net контроллер mvc решает, какой вид вызывать при наступлении определенного события. Информация контроллера о модели и представлении. представление может иметь только тип модели объекта. который в php будет следующим

class model{
//code..
}
class controller{
private $model;//model type object
private view;/view type object
//code..
}
class view{
private $model;//model type of object
//code..
}

Какой из них лучше всего подходит в php для создания типа представления объекта в контроллере или типа контроллера объекта в представлении.

Большое спасибо!

2

Решение

Php не поставляется со структурой MVC «из коробки».
Существует несколько способов реализации структуры MVC, вы можете создать свой собственный.

Несколько полезных статей:
https://r.je/mvc-in-php.html

http://www.sitepoint.com/the-mvc-pattern-and-php-1/

Я лично создаю класс Tempalte, методы которого позволяют добавлять данные в выбранный вид.

Вот пример:

   <?php

/**
* Description of Template
*
* @author yuri.blanc
*/
class Template {
private $template = TEMPLATE;
private $message = array();
/**
*
* @var array
*/
private $var = array();
private $view;

/**
*
* @param array $args
*/
public function renderArgs($name, $value){
$this->var[$name] = $value;
}

public function render($controller, $view) {
$ctrl = strtolower($controller);
$this->page_content = $this->view = APP_ROOT."/view/$ctrl/$view.php";
$this->renderArgs("template", $this->template);
$this->renderArgs("page_content", $this->page_content);
extract($this->var);
include APP_ROOT."template/$this->template/index.php";
}

}

Таким образом, ваше целевое представление будет иметь переменную $ name с $ value в качестве данных.
Чтобы создать представление, вы просто делаете то, что вам нужно, на контроллере, а затем используете render ($ controller, $ view) на экземпляре шаблона после добавления ваших «args». (файлы являются просмотр / CONTROLLER / VIEW.php).

В этом примере файлы шаблона php действуют как статический контейнер, в который включены файлы представлений (основной контейнер).

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector