2010-02-10 8 views
0

젠드 프레임 워크와 주로 모델 파트에 대한 질문이 있습니다. 나는 추상 모델 클래스가없고 그 이유를 알고 있습니다. 나는 그것에 관한 많은 블로그 포스트를 붉히지 만, 분명히 나에게 그것을 설명 할 어떤 예도 발견 할 수 없었다. 나는 아주 기본적인 어플리케이션을 만들고 있습니다. 3 개의 테이블 만 있다고 상상해보십시오. 회사 (ID, 이름, 거리, 거리 번호, 도시), 메타 (ID, 이름, 설명), 회사 2 메타 (ID, 회사 ID, 메타 ID, 값, 참고) 모든 유형의 realtionship이 있습니다 (1n n1, nm). 또한 Value Objects와 함께 서비스 (amf)가 필요합니다. 그래서, 여기에 내가 무슨 생각입니다 :Zend Framework with service

  1. 내가 /model/dbTables/(Company.php, Meta.php, Company2Meta.php)에서 세 개의 테이블 클래스를 만들 것이다.

  2. 다음 모델 /에서 saveCompany ..., deleteCompany, getCompanyMeta ...와 같은 메소드가 있어야하는 User.php (기본 클래스)를 추가하고 위에 선택한 테이블에서 작동합니다.

  3. 서비스 클래스 (/services/CompanyService.php)는 생성자에서 모델의 인스턴스를 만들고 모델과 동일한 메소드를 갖습니다.

여기 내 질문이 있습니다. 데이터 흐름은 어떻게해야하며 어디에서해야합니까? 예를 들어 service clas에서 getCompany를 호출하면 회사와 메타에 대한 모든 정보가 포함 된 value 객체를 반환하려고합니다. 만약 모델 클래스가 없다면 mate2company에서 행 양식 회사와 행 집합을 가져 와서 값 객체로 변환 할 수 있습니다. 그리고 업데이트 할 때 회사 및 모든 메타에 대한 정보를 저장할 필요가 있습니다 (새로운 메타 데이터를 찾아야 함). (삽입), 오래된 (업데이트) 및 삭제 ... 삭제) 그래서 어디서해야합니까? 모델 또는 서비스 중인가? 내가 바라는 것을 강조 할 수 있기를 바랍니다.

추신 : 내 영어 죄송합니다 ...

답변

0

사용자 모델이 좋아한다 :

class App_Model_User 
{ 
    protected $_data = array(
     'id' => null, 
     'username' => null, 
     'companyId' => null, 
     'company' => null 
    ); 

public function setId($id) 
{ 
    $this->_data['id'] = $id; 
} 

public function getId() 
{ 
    return $this->_data['id']; 
} 

//Other setters getters.. 

public function setCompany(Cms_Model_Company $company) 
{ 
    $this->_data['company'] = $company; 
} 

public function getCompany() 
{ 
    if (null == $this->_data['company']) { 
     $this->setCompany(Cms_Service_Company::find($this->_data['companyId'])); 
    } 

    return $this->_data['company']; 
} 
} 

사용자와 회사가 다른 thnigs이기 때문에, 그들은 또 다른 모델이어야합니다.