2010-08-04 4 views
2

현재 데이터베이스 액세스 클래스는 DB이며 PDO입니다. 내가 처음이 좋은했다데이터베이스 액세스 추상화 클래스

  • Users
  • Images
  • Galleries
  • Text
  • Videos

을 시작했다 : 나는 그런 다음 각 테이블에 액세스하기위한 하위 클래스의 소수를 가지고 내 프로젝트,하지만 지금은 잘 모르겠다. e 각 클래스 내에서 사용하는 각 데이터베이스 쿼리에 대한 메서드입니다. 예 :

Images::insertNew($filename) 
Images::getTotalInGallery($galleryId) 
Images::getAllInGallery($galleryId, $fetchStyle) 
Images::updateDescription($imageId, $description) 
Images::updateGallery($imageId, $galleryId, $orderNum) 
Images::getSingle($imageId) 
Images::getFilename($imageId) 
Images::getImageIdByFilename($filename) 


Galleries::getNameById($galleryId) 
Galleries::getAll() 
Galleries::getMaxImages($galleryId) 
Galleries::checkIfExists($galleryId) 
Galleries::createNew($galleryName) 
Galleries::getById($galleryId) 
Galleries::delete($galleryId) 

글쎄, 당신은 아이디어를 얻습니다. 그들을 위해 필요에 따라 나는이 방법을 추가되었으며, 개발, 난 그냥 DB 클래스를 사용하여 시작 :

//Execute a query 
DB::query($query); 

//Get a single row 
$row = DB::getSingleRow($query); 

//Get multiple rows 
$rows = DB::getMultipleRows($query); 

그래서, 내 DB 클래스와 쿼리를 테스트를, 그들은 작업 할 때, I 그것과 관련된 클래스의 메서드로 래핑합니다 (이미지 테이블의 이미지 클래스, 갤러리 테이블의 Galleries 클래스 등).

나중에 새 기능을 추가하면서 계속 성장하고 성장할 것 같은 느낌입니다. (괜찮을 수도 있지만 확실하지 않습니다.) 누구든지 내 방법을 비판하고 대안을 제시 할 수 있습니까?

감사합니다.

답변

1

아니요, 실제로 이것은 꽤 좋은 것으로 들립니다. 비즈니스 로직과 데이터 액세스 사이에는 견고한 추상화 레이어가있는 것 같습니다 (Data Mapper pattern).

큰 문제가되는 유일한 문제는 겹치는 방법으로 끝날 수 있다는 것입니다. 또한 두 클래스에서 표준 명명 규칙을 유지하려고 노력해야합니다.

이미지에서이 메소드는 Images :: insertNew이고 갤러리에는 갤러리 : createNew입니다.

모델이 있습니까? 그것이 보이는 이유는 단일 값을 모으기위한 많은 쿼리가 있지만 전체 객체가 아닙니다.

+0

이 추상화 클래스에서 검색 한 쿼리의 결과 만 사용합니다. 필자가이 글을 쓰고 있기 때문에 필자는 비 php 프로젝트에서 모델을 사용하고 있다는 것을 알고있다. 아마도이 PHP 프로젝트에서 모델을 만들어야 할 것이다. –

+0

사실, 당신은 모든 데이터를 가진 모델을 검색하기 위해 몇 가지 표준 메소드 (삽입, 삭제, 업데이트, findAll, findById, find (필터 옵션 사용))를 가질 수 있기 때문에 실제로 그러한 쿼리의 대부분을 제거하는 방법이 될 것입니다. 갖고 싶다. 원하는 데이터 (SELECT * FROM 없음)에 대해 정확히 알고 싶다면 추가 열을 지정하거나 사용자 정의 함수를 생성 할 수 있습니다. –

+0

알겠습니다. 따라서 현재 설정 (데이터 추상화 레이어 w/out 모델)을 계속 수행하고 메서드에 사용하는 명명 규칙을 조심하거나 일부 모델 클래스를 구축하고 추상화 계층을 제거 할 수 있습니까? –

관련 문제