Я посмотрел на композиционный шаблон, и мне кажется, что он интересен, когда вы хотите создать композицию с разным количеством листьев. В моем случае всегда есть одна собственность, один проект и одна версия для любых организаций.
Моя цель - иногда я просто использую информацию о собственности, а иногда мне нужна только информация о проекте.
Я покажу вам, как я спроектировал мои классы, просмотрите последние строки для процесса выполнения и ожидаемые значения.
Я думаю, что этот код не работает, так как мне установить переменную родителей, когда я создаю экземпляр ребенка?
// Version
<br />
class Version extends Project
<br />
private $this->_patId;
<br />
private $this->_proId;
<br />
private $this->_verId;
<br />
{
<br />
public function __contruct($patrimonyId, $projectId, $versionId)
<br />
{
<br />
$this->_patId = $patrimonyId;
<br />
$this->_proId = $projectId;
<br />
$this->_verId = $versionId;
<br />
}
<br />
public function getVersionId()
<br />
{
<br />
return $this->_verId;
<br />
}
// Project
<br />
class Project extends Patrimony
<br />
private $this->_patId;
<br />
private $this->_proId;
<br />
{
<br />
public function __contruct($patrimonyId, $projectId)
<br />
{
<br />
$this->_patId = $patrimonyId;
<br />
$this->_proId = $projectId;
<br />
}
<br />
public function getProjectId()
<br />
{
<br />
return $this->_proId;
<br />
}
// Patrimony
<br />
class Patrimony
<br />
private $this->_patId;
<br />
{
<br />
public function __contruct($patrimonyId)
<br />
{
<br />
$this->_patId = $patrimonyId;
<br />
}
<br />
public function getPatrimonyId()
<br />
{
<br />
return $this->_patId;
<br />
}
<br />
<br />
// Execution
<br />
$version = new Version(1,2,3);
<br />
$version->getVersionId(); // should return 1
<br />
$version->getProjectId(); // should return 2
<br />
$version->getPatrimonyId(); // should return 3
<br />