2010-02-01 4 views
0

저는 젠드 프레임 워크를 사용하며 클래스를 모델화하기 위해 조언을 드리고 싶습니다. 3 개의 클래스 Patrimony.php Project.php와 Version.php가 있습니다. 버전 확장 Project는 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

// 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;
}
정말 질문을하지 않습니다. 그러나 상속이 최선의 해결책이 아닐 수도 있습니다. 작문이 더 좋을 수 있습니다. 예 : 버전의 목적은 무엇입니까? 프로젝트가 여러 버전으로 존재할 수 있다면 이것을 컴포지션으로 디자인 할 것입니다. –

+0

팁을 주셔서 감사합니다.이 패턴을 살펴 보겠습니다. – toddoon

답변

0

:-) 나를 불이 그것을 당신이 다른 번호로 구성 할 때 interessant 것 같다하세요 나뭇잎의. 필자의 경우 항상 하나의 프로젝트 인 하나의 프로젝트와 하나의 프로젝트에 대해 하나의 개체가 존재한다.

가끔 목표는 때로는 자산에 관한 정보 만 사용하는 것입니다. 프로젝트에 대한 정보 만 필요로합니다.

나는 내 수업을 어떻게 디자인했는지 보여주고 실행 과정과 예상 값의 마지막 줄을 보았다. 나는이 코드가 작동하지 않는다고 생각하여 아이를 인스턴스화 할 때 부모 변수를 어떻게 설정해야합니까?
// 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