클래스가 User
이고 클래스가 UserFactory
(공장 패턴)입니다. 팩토리는 SQL에 연결하고 사용자 객체의 인스턴스를 생성합니다.이상적으로 속성을 할당하는 클래스는 User 또는 UserFactory입니까?
우리는 종종 데이터베이스에서 검색된 필드를 사전 처리해야하므로 어느 것이 가장 적합한 지 궁금합니다. User
객체가 실제 처리를 수행이 예에서는
class UserFactory {
function getUserByID($id) {
$q = $this->DB->query("SELECT id, name, email FROM user WHERE id = ?", $id);
if(!$q)
return FALSE;
return new User($q);
}
}
class User {
function __construct($obj) {
if(!empty($obj->id)) $this->ID = (int) $obj->id;
if(!empty($obj->name)) $this->name = $obj->name;
if(!empty($obj->email)) $this->email = $this->verifyEmail($obj->email);
}
}
을,하지만 난 아직도 내가 디자인이 UserFactory
을하면서 User
객체의 실제 SQL 필드 이름을 사용하도록 강요하고있어 얼마나 싫어 예를 들어 (간체) SQL과 PHP 사이의 계층이 될 수 있습니다.
그래서 나는 그렇게 같이 UserFactory
에 처리를 움직일 수 :
class UserFactory {
function getUserByID($id) {
$q = $this->DB->query("SELECT id, name, email FROM user WHERE id = ?", $id);
if(!$q)
return FALSE;
$user = new User($q->id);
$user->setName($q->name);
$user->setEmail($q->email);
return $user;
}
}
class User {
function __construct($id) {
$this->ID = (int) $id;
}
function setName($name) {
$this->name = $name;
}
function setEmail($email) {
$this->email = $this->verifyEmail($email);
}
}
을 내가 지금은 추가 기능을 만들고있어 제외하고,이 일을 할 수있는 좋은 방법이 될 것 같아요 불필요한 것 같다 각 속성에 대한 호출 , 나는 각각의 UserFactory
함수를 사용하여 수동으로 속성 목록을 설정해야합니다.
이상적으로이 필드를 처리하여 개체에 할당하는 것이 좋을까요? '받아 들여지는 길'은 무엇입니까? 각 속성에 대한 설정자를 만들거나 User
클래스 생성자에 여러 개의 인수를 추가할까요 ... 귀하의 아이디어를 듣고 싶습니다.
는 (나는이 '이상적인 코드 스타일의 질문은 주관적 일 수 있습니다 알고 나는이 어떤 커뮤니티 가이드 라인을 위반 아니에요 바랍니다.)
당신은 사용자 생성자 당신 추상적 인 수 필드 이름에 각 속성에 대한 다른 매개 변수가 있다면. –