2009-11-01 2 views
1

PHP와 Zend Framework를 사용하여 중규모 프로젝트를 어떻게 처리합니까? 모델 및 데이터베이스 작업에 Zend DB Table/Row를 사용합니까? 또는 SQL 문과 함께 어떤 종류의 추상 모델 클래스가 있습니까?젠드 DB 테이블? 또는 자신의 SQL?

감사의 말씀을 전합니다.

+2

저는 젠드를 사용하지 않을 것입니다. 사용하기가 어렵습니다. Codeigniter를 사용하는 것이 더 편합니다. – GabiMe

+3

CodeIgniter는 더 간단하지만 ZF보다 품질이 떨어지며 기능이 훨씬 적습니다. 인내가 갚을 것이다! –

+0

Zend는 사용하기가 매우 쉽습니다. 배우기가 어렵습니다. D –

답변

6

데이터베이스 항목의 기본 처리를 위해 Zend_Db_Table 및 Row를 권하고 싶습니다. 매우 고급 (doctrine에서 전체 ORM을 참조하십시오)이지만 기능을 캡슐화하는 좋은 방법이며 사용자 정의 기능을 Row 객체에 추가 할 수 있습니다.

당신은 항상 당신의 모델에 원시 SQL 방법을 추가 할 수 있습니다

class MyModel extends Zend_Db_Table_Abstract { 

     public function getSomething(){ 
      return $this->getAdapter()->fetchAll("SELECT * FROM `tbl`"); 
     } 

    } 
+0

+1; 이것은 기본적으로 내 대답했다. ZF를 사용했던 과거 프로젝트에서 우리는 각 테이블에 대해 Zend_Db_Table_Abstract 클래스를 파생 시켰습니다. 이 방법은 효과가 있었으며 일부 테이블 유형 (예 : 조회 테이블)간에 공통 기능을 지원하는 클래스 계층 구조를 사용할 수있었습니다. –

+0

@James : Zend_Db_Table 만 추상화 했나요? 아니면 Zend_Db_Table_Row입니까? – opHASnoNAME

+0

Zend_Db_Table_Abstract 만 확장했습니다. 우리는 아마도 Zend_Db_Table_Row를 확장하여 약간의 작업을 할 수 있었을 것입니다. 우리는 두 개의 모델 레이어 (구체적인 테이블 클래스 및 이러한 테이블 클래스를 사용하는 두 번째 응용 프로그램 계층 모델)로 끝 맺었습니다. –

1

우리는 개인적으로 우리 회사의 모델에서 Zend_Db_Select()를 사용합니다. 우리가 전자 상거래 소프트웨어에 많은 조인과 물건을 사용하기 때문입니다. 간단한 앱의 경우 Zend_Db_Table이 적합합니다.

1

저는 최근에 DB 계층에서 Doctrine을 사용 해왔고 뒤돌아 보지 않았습니다. DB에서 객체 그래프를 채우는 것이 간단하다는 것을 알았습니다. 다른 솔루션은 내가 좋아하는 관계를 처리하는 데 너무 성가 셨습니다.

내 도메인 모델은 DB 계층 위에 위치하고 비즈니스 논리를 관리합니다.

도메인 모델에 따라 달라집니다. Doctrine의 현재 버전에서는 모든 모델이 클래스를 확장해야하므로 모델 상속이 필요한 경우 적합하지 않습니다. 또한 모델이 DB 구조와 유사한 경우에만 적합합니다.