2012-06-15 2 views
5

OOP 관점에서 PHP에서 DAO (데이터 액세스 개체)를 만드는 올바른 방법은 무엇입니까?PHP에서 DAO를 만드는 올바른 방법

  • GetAllAccounts
  • GetAccountByID
  • UpdateAccount
  • DeleteAccount
  • InsertAccount
  • :

    예를 들어

    (기본 예제로 계정을 사용하여), 내 AccountDAO는 다음과 같은 기능의 일부를해야합니다

일단 데이터베이스의 모든 계정을 가져 오면 계정 개체 배열로 호출자에게 반환해야합니까? mysql 결과 집합을 반환해야합니까?

DAO의 좋은 예를 알고 있습니까? 당신이 데이터베이스에 대한 연결을 만들기 3 가지 방법 중 하나를 포함하는 클래스를 만들 수 있습니다이를 위해

답변

-1

은, 두 번째는 SQL 쿼리

<?php 
class Database{ 

    public function con_open(){ 
     $con = mysql_connect("domain","username","password"); 
      if (!$con) 
      { 
       die('Could not connect: ' . mysql_error()); 
      } 
     mysql_select_db("db_name", $con); 
    } 

    public function query($sql){ 
     $result = mysql_query($sql); 
      if(!$result){ 

      }else{  
        return $result; 
       } 
    } 

    public function fetch($result){ 
     $row = mysql_fetch_array($result); 
     return $row; 
    } 

    public function con_close(){ 
     mysql_close($con); 
    } 
} 


$db = new Database(); 

?> 

희망 당신에게 도움이 의지를 실행하는 연결과 세 번째 닫는 것이

+2

mysql_ * 확장자를 사용하지 말아야 할뿐만 아니라 명시 적으로 코드를 변경하지 않고 연결 세부 사항을 변경할 수 없습니다. – cspray

+2

나는 OP가 데이터베이스 클래스가 아닌 DAO (데이터베이스의 특정 테이블에 액세스하는 데 사용됨)를 찾고 있다고 생각합니다. – AdmiralAdama

0

DAO를 빌드하는 올바른 길을 걷고 있습니다. 나열한 방법은 반드시 DAO의 일부 여야합니다.

특정 질문에 대답하려면 DAO는 데이터베이스 특정 개체를 누설해서는 안되며 데이터베이스 공급 업체와 관련이없는 한 일부 데이터베이스 개념이 누설 될 수 있습니다.

아니, 당신은 MySQL 결과 집합을 반환해서는 안됩니다. 그러나 MySQL 결과 집합을 래핑하고 상위 수준 개념 (열 추출 대신 전체 개체 추출)에서 작동 할 수있는 일반 결과 집합을 만들 수 있습니다.

편집 : 내 의도는 실제로 결과 집합 래퍼를 만들도록 유도하는 것이 아니라 처음 제안한 것과 같은 개체 배열을 반환하는 것입니다. 이것은 단지 예일뿐입니다.

+0

고맙습니다. 고맙겠습니다. 저는 ASP 세계에서 이러한 유형의 작업을 수행했지만 모든 PHP 스크립트는 기본적인 절차 스크립트였습니다. 내 PHP 애플 리케이션을 oop PHP 애플 리케이션으로 전환하려합니다. – carlg

관련 문제