3 回答
TA贡献1877条经验 获得超1个赞
如果该项目有图像,我应该在哪里加载图像类来处理这些图像?我应该像$ this-> images = new Images();一样将其加载到project_model中吗?并在模型内部具有功能
是。该模型的目标是封装业务逻辑,以便您只需要编写一次算法,然后多次共享它们。如果您是我,该怎么做,就是将一个getImages()方法添加到Project模型中,因为图像是项目的直接属性,这使得每个项目都知道如何检索自己的图像。
与我使用过的(水合和对等/表)类相比,您的代码缺少一些关键概念,因此我将尽量坚持使用您的代码。您可以通过Project对象检索图像,然后通过2种视图1引用图像:
// Controller
$this->project = new Project();
$this->projectImages = $project->getImages(); // Implemenation #2
// View
// Implemenation #1 (reference to object initialized in controller)
<?php foreach ($project->getImages() as $image): ?>
<img src="<?php echo $image['path'] ?>" />
<?php endforeach ?>
// Implemenation #2 (reference to separate variable initialized in controller)
<?php foreach ($projectImages as $image): ?>
<img src="<?php echo $image['path'] ?>" />
<?php endforeach ?>
以上仅是说明性的,但应给您一个想法。我建议你看看《主义》。它是一种经过验证且稳定的ORM,可提供您尝试编写的大部分内容,并且还添加了我之前提到的缺少的组件。水化,对象关系和Table类,以及许多其他功能(例如嵌套集)。
TA贡献1836条经验 获得超3个赞
projects.php 此控制器扩展了项目控制器。主要目的是使用自己的模型处理多个getAllProjects(),然后将其传递给项目控制器getProject()
class Projects extends Project{
public function __construct()
{
parent::__construct();
$this->projects_model = new Projects_model();
}
public function getAllProjects()
{
$res = $this->projects_model->getAllProjects();
if($res) foreach($res as $v) $projects[] = $this->getProject($v);
return $projects;
}
}
project.php
project_model除了获取项目数据和相关数据(如图像)外无非
class Project{
public function __construct()
{
$this->project_model = new Project_model;
$this->images = new Images();
}
public function getProject($data=NULL)
{
if($data==NULL) $data = $this->project_model->loadProject($data['id']);
$images = $this->project_model->loadProjectImages($data['id']);
return array('project_id' => $data, 'project' => $data, 'images' => $images);
}
public function getProjectByID($id)
{
$data = $this->project_model->loadProject($id);
return getProject($data);
}
}
这种方法的好处是,我可以单独使用项目类,它将起作用。我可以将其封装在项目中,也可以使用它。
这是做事的好方法(正确)吗?还是将所有这些整合到一个控制器和一个模型类中会更好?
- 3 回答
- 0 关注
- 439 浏览
添加回答
举报