2009-08-03 3 views
1

사용자 모델이 있다고 가정 해 보겠습니다. 내가 모델 자체에 메서드를 넣을 수 있을까요, 아니면 사용자 테이블 개체에서 액세스 할 수있는 템플릿으로 만들겠습니까? 더 바람직하다 즉Doctrine에서 직접 메서드를 넣어야합니까?

:

$u=new User(); 
$u->register($username, $password, $email); 

또는

$userTable = Doctrine::getTable('User'); 
$userTable->register($username, $password, $email); 

논리적으로 암호 변경과 같은 것들에 대해 무엇을 더 의미하지만, 이후 내 본능, 두 번째가 될 것입니다 , 로그인, 등? 사용자 테이블 개체에 등록하는 것과 같은 것을 유지하는 동안 사용자 모델에 실제로 추가해야합니까?

답변

2

아마도 질문에 대한 완전한 대답은 아니지만 Matthew Weier o'phinney가 며칠 전에 게시 한 Play-Doh: Modelling Your Objects 회의의 경우 슬라이드를 살펴 보는 것이 좋습니다.

(그들은 나를 생각하게 만들었지 만, 나는 여전히 당신의 질문에 명확한 답을 줄 수 없습니다. 나는 "그것이 달려있다"라고 말할 것입니다 ... 그러나 조작, 데이터

  • "서비스"에 접근을

    • 모델 :

      아마) ^^ 무엇인지에 대한 확실하지, 큰 응용 프로그램의 상황에서, 나는 또 하나의 레이어를 사용합니다 그것; 내가 모델에 넣어 ... 그리고 물론,

    • 를 속하고하지 않는 컨트롤러에 그것을 가지고 있지 것보다 더 많은 일을 할 수있는, 컨트롤러 및 뷰

    하지만 ' 모두에게 동의를 얻지는 않을 것입니다 ... 그래서 저는 한 가지 방법을 선택하고 팀의 모든 사람들이 전체 프로젝트에서 그런 식으로 행동하도록하십시오. 하나의 프로젝트/응용 프로그램에서 너무 많은 다양한 방법이 혼합 된 것보다 더 나쁜 것은 없습니다!

  • 2

    일반적으로 사물이 사용자의 특정 인스턴스 (예 : me 또는 you)와 관련된 경우 User 클래스에 속합니다. 그들이 사용자 그룹과 관련이 있거나 사용자가 아직없는 경우 (즉, 데이터베이스에서로드하는 경우), 이들은 테이블 클래스에 속합니다.

    나는대로 예를 들어 할 것 :

    class UserTable { 
        function register($username, $password, $email) { 
        $user = new User; 
        $user->username = $username; 
        $user->password = $password; 
        $user->email = $email; 
        $user->save(): 
        } 
    } 
    

    사람들은 몇 가지 생각 속하고 절약 그들 중 하나입니다에 대해 주장 할 것이다! 다른 비슷한 PHP ORM 인 Propel은 Table에 상응하는 Object 클래스와 Object 클래스에 save 메소드를 포함하고 있습니다. 등록은 이와 유사합니다. 그래서 누군가가 곧 다른 편을 논할 것이다! 확실히,

    비밀번호 변경은 사용자에 속하는 - 당신은 그냥 필드를 변경, 사용자의 암호를 변경 :

    는 내 의견으로는, 다른 질문에 대답합니다.

    로깅은 테이블 클래스에 있어야합니다. 검색의 특수한 경우입니다.

    관련 문제