2010-02-01 65 views
0

我使用zend框架,我想建議您對我的類進行建模。 我有3個類Patrimony.php Project.php和Version.php。 版本擴展項目延伸Patrmimony。 在另一方面,我有這樣的/data/patrimonies/projects/versions/PHP5中面向對象的對象模型

文件夾結構,我不知道我是否必須使用設計模式或類似的東西,如果遺產有一個變量$ _project其中包含項目的一個實例,怎麼辦我instanciate我的班(__construct() PARAMS)。簡而言之,我非常迷惑OOP。

請輕我:-)

class Admin_Model_Patrimony { }

class Admin_Model_Project extends Admin_Model_Patrimony { }

class Admin_Model_Version extends Admin_Model_Project { }

+0

我真的不明白你的問題。但請注意,繼承可能不是最好的解決方案。組成可能會更好。例如。 「版本」的目的是什麼?如果一個項目可以存在多個版本,我會將其設計爲一個組合。 – 2010-02-01 14:52:02

+0

好的thx的提示我會看看這種模式。 – toddoon 2010-02-03 13:01:26

回答

0

我看看構圖模式,似乎當你想用不同數量的組成是interessant的葉子。就我而言,任何實體總是有一個項目和一個版本。

我的目標是有時我只是使用關於遺產的信息,而我只需要關於項目的信息。

我向您展示了我如何設計我的類,請參閱執行過程和期望值的最後幾行。 我認爲這段代碼不起作用,所以當我給一個孩子定一個孩子時,我該如何設置父母的變量?

// 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