나는 내 데이터베이스에 대한 내 자신의 클래스 모델을 개발 중이고 여러분이 생각하는 것을 알고 싶습니다.PHP 데이터베이스 클래스 패턴 질문/제안
데이터베이스의 각 테이블에 대해 2 개의 클래스가 있습니다. 첫 번째는 페칭 클래스 (나는 그것을 호출하는 법을 모르겠다.)이다.이 클래스는 데이터베이스 (fetchAll, fetchById 등)와 상호 작용하는 정적 메서드를 가지고있다. 두 번째 클래스는 모델 자체이며, 테이블의 행에 대한 모든 메소드 (행에 대한 삽입, 업데이트, 삭제, 유효성 검사 또는 기타 처리)를 포함합니다.
각 가져 오기 클래스는 fetchAll 인 경우 모델 개체를 반환하고 메서드는 모델 배열을 반환하고 fetchById 메서드가 id가 유일한 개체이므로 하나의 개체 만 반환합니다. 내가 사용하는 것이 방법
예 : _Map
이외의 어떤 제안이있는 경우
$users = Users_Map::fetchAll();
foreach($users as $user)
{
echo $user->username.'<br/>';
}
$user = new User_Model();
$user->username = 'example';
$user->insert();
$user = User_Map::fetchById(1);
$user->username = 'example2';
$user->update();
, 나는 열려있어. 이 "패턴"이 좋은지, 어떻게 생각하는지 알고 싶습니다. 어떻게 개선 할 수 있습니까? _Model
에 정적 및 비 정적 메서드가 모두있는 클래스를 하나만 사용해야합니까?
도움/의견을 보내 주셔서 감사합니다.
컬렉션 클래스를 반복하는 방법은 무엇입니까? 배열을 사용하는 것은 길었습니다. 가볍기 때문에 다시 돌아가서 컬렉션을 뒤져 보는 방법이 필요 없습니다. –
나는 생성기를 만들었습니다. 반복은'while ($ item = & $ collection-> next()) {...}'로 수행됩니다.이렇게하면 루프가 전체 컬렉션을 처리하지 못하게됩니다. 또한 컬렉션은 필요에 따라 각 개체를 검색하기 위해 코딩됩니다. 이 두 가지 특성은 PHP에서 많은 양의 데이터 배열로 이동하는 공통 (메모리) 문제를 방지하는 데 도움이됩니다. 이 기술을 사용하여 성능 문제를 본 적이 없습니다. 대신에 나는 큰 메모리 사용상의 이점을 보았다. – staticsan
안녕하세요,이 샘플 코드는 있습니까? 당신의 아이디어가 여러 가지면에서 저를 도울 수 있습니다. – nuttynibbles