2011-01-19 7 views
1

데이터베이스의 쿼리 데이터 기능을 포함하는 PHP 클래스가 있습니다. 첫번째는쿼리 용 PHP 클래스 중 어느 것이 더 낫습니까?

class x{ 

    public $var1; 
    public $var2; 

    function __construct(){ } 

    function getX($primkey){ 
    $sql = mysql_qyery("SELECT * FROM x_table WHERE primkey='$primkey'"); 
    $row = mysq;_fetch_assoc($sql); 
    $this->var1 = $row['var1']; 
    $this->var2 = $row['var2']; 
    } 

} 

이고 다른 하나에

class x{ 

    public $var1; 
    public $var2; 

    function __construct(){ } 

    function getX($primkey){ 
    $sql = mysql_qyery("SELECT * FROM x_table WHERE primkey='$primkey'"); 
    $row = mysq;_fetch_assoc($sql); 
    return $row; 
    } 

} 

두 클래스 함수 getX()에 약간 차이가있다. 첫 번째 클래스는 데이터베이스의 데이터를 클래스 변수에 저장하지만 두 번째 클래스는 배열을 통해 데이터베이스의 전체 데이터를 반환합니다.

두 클래스의 성능에 대해 알고 싶습니다. 어느 것이 더 좋습니다. 그리고 어느 것이 프로그래밍이나 어떤 아이디어에 좋은가요?

감사합니다.

답변

0

첫 번째 양식을 사용하면 추가 변환 및 비대칭 매핑을 수행 할 수 있습니다. 따라서 실제 데이터 소스를 추상화하는 Model 클래스를 만드는 것입니다.

두 번째 양식을 사용하면 컨벤션 오버 구성 (CoC) 패러다임을 따르고 규칙을 명확하게 정의하면 작동 할 수 있습니다. 그러나 라인을 따라 가면 예외를 만들어야하는 상황에 처할 수 있습니다. 나는 미래의 예외에 대한 기대로 상기 한보다 유연한 접근법을 추천 할 것이다.

접미어 : 교육 목적으로 만 또는 완전히 다른 이유로 인해 자신의 개체 매핑을 작성하지 않은 경우 RedBeanPHP 또는 다른 대안을 보았습니까?

0
class x{ 

    public $row; 

    function __construct(){ } 

    function getX($primkey){ 
    $sql = mysql_qyery("SELECT * FROM x_table WHERE primkey='$primkey'"); 
    this->$row = mysq;_fetch_assoc($sql); 

    } 

} 

내 제안은 여기에 있습니다. 당신은 캡슐화가 적절하게 통합되어 있으며 미래의 요구 사항도 동적으로 수용됩니다.

아마도 게터 기능을 추가 할 수도 있습니다.

0

데이터베이스 어댑터를 만든 다음 데이터 매퍼를 만들고 데이터 매퍼를 사용하는 모델로 작업합니다.

$ model-> find()를 호출하면 데이터베이스 어댑터에 쿼리를 발행하는 데이터 매퍼 찾기 메소드를 호출하는 객체 찾기 메소드가 호출됩니다.

관련 문제