>백엔드 개발 >PHP 튜토리얼 >PHP 메소드 위치

PHP 메소드 위치

WBOY
WBOY원래의
2016-08-18 09:15:461148검색

PHP를 사용할 때 문제가 발생했습니다
예를 들어 지금 테이블이 3개 있습니다
사용자 테이블: 사용자
제품 테이블: 상품
바우처: 티켓
사용자 주소: 주소
이것은
사용자, 상품, 티켓, 주소
세 가지 개체에 해당합니다.
이제 여러 기능이 있습니다: 사용자 바우처 가져오기, 사용자가 사용할 수 있는 바우처 가져오기, 사용자 주소 목록 가져오기, 사용자가 구매한 항목 가져오기

내가 지금 하는 일
<code class="php">class User extends Model{
    public function oder()
    {
        return OrderRepository::getByUserId($this->id);
    }
    public function successOrder()
    {
        return OrderRepository::getSuccessByUserId($this->id);
    }
    public function cancelOrder()
    {
        return OrderRepository::getCancelByUserId($this->id);
    }
    public function address()
    {
        return AddressRepository::getByUserId($this->id);
    }
    ...
}</code>


이렇게 하는 이유는 사용자와 밀접하게 관련된 작업을 사용자 개체에 넣는 것이 더 합리적이라고 생각합니다. 사용자 클래스가 너무 큽니다!

보통 어떻게 처리하시나요?

답글 내용:


PHP를 사용할 때 문제가 발생했습니다
예를 들어 지금 테이블이 3개 있습니다
사용자 테이블: 사용자
제품 테이블: 상품
바우처: 티켓
사용자 주소: 주소
이것은
사용자, 상품, 티켓, 주소
세 가지 개체에 해당합니다.

이제 여러 기능이 있습니다: 사용자 바우처 가져오기, 사용자가 사용할 수 있는 바우처 가져오기, 사용자 주소 목록 가져오기, 사용자가 구매한 항목 가져오기
<code class="php">class User extends Model{
    public function oder()
    {
        return OrderRepository::getByUserId($this->id);
    }
    public function successOrder()
    {
        return OrderRepository::getSuccessByUserId($this->id);
    }
    public function cancelOrder()
    {
        return OrderRepository::getCancelByUserId($this->id);
    }
    public function address()
    {
        return AddressRepository::getByUserId($this->id);
    }
    ...
}</code>
내가 지금 하는 일


이렇게 하는 이유는 사용자와 밀접하게 관련된 작업을 사용자 개체에 넣는 것이 더 합리적이라고 생각합니다. 사용자 클래스가 너무 큽니다!

보통 어떻게 처리하시나요?



모델 분류:

사용자 모델은 사용자 관련 항목만 저장합니다.

주문 모델은 주문 관련 항목만 저장합니다.

사업 분할과 분리에 주의하세요

로직 레이어, 모델 데이터 레이어, 서비스 서비스 레이어로 나눌 수도 있습니다

각 테이블에서 데이터를 가져오는 메서드는 해당 Model 클래스에 작성되어 있습니다. 여러 데이터 테이블에서 데이터를 가져오려면 컨트롤러에서 테이블에 해당하는 모델을 인스턴스화하고 해당 메서드를 호출하여 데이터를 가져옵니다. .컨트롤러에 데이터를 통합합니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.