2010-02-01 2 views
0

Я использую фреймворк zend, и я хотел бы получить ваш совет по моделированию моих классов. У меня есть 3 класса Patrimony.php Project.php и Version.php. Версия расширяет проект, продлевает срок. В другой руке у меня есть структура папок, как этот /data/patrimonies/projects/versions/Моделирование базовых ориентированных объектов в PHP5

Я не знаю, если я должен использовать шаблон дизайна или что-то подобное, если вотчина имеет переменный $ _project, который содержит экземпляр проекта, как Я управляю своим классом (__construct() params). Короче говоря, я очень смущаюсь с ООП.

Пожалуйста осветите меня :-)

class Admin_Model_Patrimony { }

class Admin_Model_Project extends Admin_Model_Patrimony { }

class Admin_Model_Version extends Admin_Model_Project { }

+0

Я не реально получить на ваш вопрос. Но обратите внимание, что наследование может быть не лучшим решением. Композиция может быть лучше. Например. Какова цель «Версии»? Если проект может существовать в нескольких версиях, я бы разработал это как композицию. –

+0

Ok thx для подсказок. Я рассмотрю этот шаблон. – toddoon

ответ

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

Смежные вопросы