Базовое моделирование объектно-ориентированных в PHP5 - PullRequest
0 голосов
/ 01 февраля 2010

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

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

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

class Admin_Model_Patrimony { }

class Admin_Model_Project extends Admin_Model_Patrimony { }

class Admin_Model_Version extends Admin_Model_Project { }

1 Ответ

0 голосов
/ 03 февраля 2010

Я посмотрел на композиционный шаблон, и мне кажется, что он интересен, когда вы хотите создать композицию с разным количеством листьев. В моем случае всегда есть одна собственность, один проект и одна версия для любых организаций.

Моя цель - иногда я просто использую информацию о собственности, а иногда мне нужна только информация о проекте.

Я покажу вам, как я спроектировал мои классы, просмотрите последние строки для процесса выполнения и ожидаемые значения. Я думаю, что этот код не работает, так как мне установить переменную родителей, когда я создаю экземпляр ребенка?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...