【发布时间】:2016-06-21 11:11:01
【问题描述】:
所以我有模型、视图和控制器,我的代码可以正常工作,但如果我能正确使用它,我没有人可以指导我。
我不会复制粘贴整个代码,所以我画了它的工作原理:
部分代码:
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