【发布时间】:2013-12-12 21:37:41
【问题描述】:
今天我决定我应该开始依赖 PHP 框架,因为每次从头开始编写真的很累。作为我的框架,我选择了 CodeIgniter,我想说它很棒且易于使用。但我有一些问题和困惑。我不太确定如何构建我的网站,因为我不知道何时使用模型以及何时使用控制器。
我现在拥有的是:
页面控制器
// PAGES CONTROLLER
// As its name, this controller simply loads pages by a url query.
class Pages extends CI_Controller {
/*
* Constructor - loads the variables model.
*/
public function __construct() {
parent::__construct ();
$this->load->model ( 'variables' );
}
/*
* Displays a page by its name.
*/
public function view($page = 'home') {
if (! file_exists ( "application/views/pages/$page.php" )) {
show_404 ();
}
$data ['title'] = ucfirst ( $page );
$data ['variables'] = $this->variables;
$this->load->view ( "templates/header", $data );
$this->load->view ( "pages/$page", $data );
$this->load->view ( "templates/footer", $data );
}
}
变量模型
// VARIABLES MODEL
// Used like a "mysql variables", all the data is taken from a table contains 2
// rows: id and value. and those variables are mostly used for site settings.
class Variables extends CI_Model {
/*
* Constructor, simply loads the database.
*/
public function __construct() {
$this->load->database ();
}
/*
* Gets a variable stored in the database.
*/
public function get($id) {
$query = $this->db->get_where ( 'variables', array (
'id' => $id
) );
return $query->row_array ()["value"];
}
/*
* Sets a variable stored in the database.
*/
public function set($id, $value) {
$this->db->where ( 'id', $id );
$this->db->update ( 'variables', array (
'value' => $value
) );
}
}
我是否使用了正确的层次结构?有什么我可以改变的吗?
现在我的主要问题是:例如,我想为我的网站添加会员功能。我应该执行以下操作吗? :
Member Controller - 管理当前成员,所有表单动作都指向这个控制器,该控制器与 Members 模型通信(见下文)。
成员模型 - 处理所有数据库处理,例如:登录、注册、getMember。
【问题讨论】:
-
使用控制器处理请求并将数据传递给视图,同时使用模型进行所有数据库交互并在模型中实现系统的所有业务逻辑,视图仅用于显示数据
-
@MKhalidJunaid 非常感谢您的快速回答,我已经知道您刚刚告诉我的内容,但我的主要问题是我给出的示例是否正确。
-
您还应该看看用于构建网站结构的 HTML5 样板......ariok.github.io/codeigniter-boilerplate
标签: php codeigniter single-responsibility-principle