【发布时间】:2012-04-08 10:15:30
【问题描述】:
我只是发布这个问题,所以你们中的一些人可能能够以正确的方式指出我。我正在慢慢为 OOP 热身,开始理解这个概念。我想制作一个良好的坚实核心或基础以用作 CMS 后端。它还将使用 MVC。我一直使用http://gilbitron.github.com/PIP/ 作为 MVC 基础。
我想不通的是:
说,在后端的项目页面上,我有 2 个部分:htmltext 和项目,我应该能够同时编辑它们。 uri 将类似于: //domain/backend/projects(方法是索引并显示2个部分)
当我点击项目时应该如何处理? //域/后端/项目/项目/或 //域/后端/项目/列表/
更进一步,一个项目将包含一些图像或画廊: //domain/backend/projects/edit/5/gallery/2
我的问题是,首先:这是一个好方法吗?更重要的是如何在 OOP 中实现它
主要项目控制器:
class projects {
function index(){
// view index
}
function edit{
$project = new Project();
$projectdata = $project->load(5);
}
}
单个项目控制器
class project {
function __construct(){
$this->projectmodel = $this->loadModel('project_model'); // prepare the model to be used
}
function load($id){
$this->projectmodel->loadproject($id);
}
}
项目模型
class project_model extends model { //extends for DB access and such
function __construct(){
// do stuff
}
function loadproject($id){
return $this->db->query("SELECT * FROM projects where id=" . $id . " LIMIT 1");
}
}
现在我的问题。如果这个项目有图像,我应该在哪里加载图像类来处理这些?我应该像 $this->images = new Images(); 这样将它加载到 project_model 中吗?并在模型内部有一个函数
function loadimages($id){
$this->images->load($id);
}
然后图像会是这样的:
class image extends model { //extends for DB access and such
function __construct(){
}
function load($id){
return $this->db->query("SELECT * FROM project_images where id=" . $id . " LIMIT 1");
}
}
似乎控制器和模型以这种方式混淆了。然而,从逻辑上讲,项目是一个包含项目信息的容器,它可以是文本、图像,也可能是视频。我将如何在逻辑上进行设置。
【问题讨论】:
-
附带说明,将类名的首字母大写
class Image extends Model {是一种常见的命名约定。
标签: php oop class object content-management-system