PHP5中基于面向对象的模型化

时间:2010-02-01 12:01:47

标签: php zend-framework oop

我使用zend框架,我想建议我的类的模型化。 我有3个类Patrimony.php Project.php和Version.php。 版本扩展Project扩展Patrmimony。 另一方面,我有一个像/data/patrimonies/projects/versions/

这样的文件夹结构

我不知道是否必须使用设计模式或类似的东西,如果patrimony有一个包含项目实例的变量$ _project,我如何实现我的类(__construct() params)。简而言之,我对OOP非常困惑。

请点亮我: - )

class Admin_Model_Patrimony { }

class Admin_Model_Project extends Admin_Model_Patrimony { }

class Admin_Model_Version extends Admin_Model_Project { }

1 个答案:

答案 0 :(得分:0)

我已经看过构图模式,当你想要用不同数量的叶子组合时,它似乎是有效的。在我的案例中,任何实体总有一个遗产项目和一个版本。

我的目标有时候我只是使用关于遗产的信息我只需要有关项目的信息。

我向您展示了如何设计我的类,查看执行过程的最后几行和预期值。 我认为这段代码不起作用,所以我如何在设置孩子时设置父母的变量?

// Version
class Version extends Project
private $this->_patId;
private $this->_proId;
private $this->_verId;
{
public function __contruct($patrimonyId, $projectId, $versionId)
{
$this->_patId = $patrimonyId;
$this->_proId = $projectId;
$this->_verId = $versionId;
}
public function getVersionId()
{
return $this->_verId;
}

// Project
class Project extends Patrimony
private $this->_patId;
private $this->_proId;
{
public function __contruct($patrimonyId, $projectId)
{
$this->_patId = $patrimonyId;
$this->_proId = $projectId;
}
public function getProjectId()
{
return $this->_proId;
}

// Patrimony
class Patrimony
private $this->_patId;
{
public function __contruct($patrimonyId)
{
$this->_patId = $patrimonyId;
}
public function getPatrimonyId()
{
return $this->_patId;
}

// Execution
$version = new Version(1,2,3);
$version->getVersionId(); // should return 1
$version->getProjectId(); // should return 2
$version->getPatrimonyId(); // should return 3