【问题标题】:PHP - MVC, is my aproach correct?PHP - MVC,我的方法正确吗?
【发布时间】:2016-06-21 11:11:01
【问题描述】:

所以我有模型、视图和控制器,我的代码可以正常工作,但如果我能正确使用它,我没有人可以指导我。

我不会复制粘贴整个代码,所以我画了它的工作原理:

THE PICTURE: MVC

部分代码:

class Site {
protected $config;
 function __construct() {
     $this->config = include("resources/config.php");
 }
 private function connect() { /*database connection*/ }

 public function getData($var) { 
   /* connecting, $var = amout of rows, and storing the data in array() */
}
}

class SiteView {

private $data;

function __construct(Site $data) {
    $this->model = $data;
}
public function output() { 
if(!empty($this->model->data)) { /* displays the data */ }
}
public function render($template) {
   return include("$template");
}
}

class SiteController {
public function __construct(Site $respond) {
    $this->model = $respond;
}

public function condition() {

    $view = new SiteView($this->model);

    $view->render("header.php");

    if(!isset($_GET['action'])) {
        $view->render("body.php");
    } else if($_GET['action'] === "report" AND isset($_GET['id'])) {
        $view->render("report_body.php");
    } else if ...
}

所以模型和视图是用在模板中的,我不确定是好事还是坏事。感谢您提供任何帮助或为我指路。

【问题讨论】:

  • 我有一个变量 $db,我正在为其分配连接,在每个需要数据的模型函数的末尾,我都有“$this->db = null;”关闭连接,这样可以吗?
  • 不,不可以。
  • 所以我只需要在 __construct {} 中创建连接并将连接分配给变量(对我来说是“$this->db”)然后我就可以在其他函数中使用该变量?如果我喜欢文章中的内容,我不需要使用 Try{} 和 Catch{} 介绍 SQL 调用吗?一切都会奏效,我会挽救我的服务器的生命吗? :)
  • 您应该在别处创建连接,然后在构造函数中将其传递给局部变量。是的,您不需要使用 Try{} 和 Catch{} 覆盖 SQL 调用,如果你这样做只是为了报告错误。

标签: php templates model-view-controller


【解决方案1】:

MVC或模型,视图和控制器方法是模型用于用户使用的数据,控制器是后端逻辑,视图是HTML或用户界面(UI)的输出。
通常每个请求首先到达控制器。控制器与模型和视图相连。控制器根据模型的请求收集数据并将数据发送到视图进行显示。视图无法与模型连接。

更多详情请看此链接,Click Here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多