2012-12-20 9 views
0

데이터를로드하는 load() 메소드를 사용하도록 구체적인 클래스의 구현을 강제하기 위해 PHP에서 추상 클래스로 전자 상거래 클래스의 라이브러리를 작성하기 시작했습니다. 객체는 :기본 클래스에서 파생 된 객체에 데이터로드 PHP

  • 핵심 라이브러리 않은 감동 유지 :

    abstract Cart { 
        abstract function load(); 
        // other stuff ... 
    } 
    
    class MyCart extends Cart { 
        public function load() 
        { 
         // pull in data from anywhere ... 
        } 
    } 
    

    이이 일에 대해 갈 수있는 올바른 방법인지 궁금 해서요 ...

    내가 원하는.

  • 매우 간단하게 유지하고이 코드를 다시 사용하고 다른 사람들이이 코드를 구현할 예정입니다.

나는 (아직) 이것들을 조사하지는 않았지만 나는 올바른 방향으로 나를 가리킬 수 있겠는가?

건배, 존.

답변

2

대신 추상 클래스를 사용하여, 나는이 목적을 위해 인터페이스를 사용하는 것이 좋습니다 :

interface Cart { 
    public function load(); 
    // other stuff ... 
} 

class MyCart implements Cart { 
    public function load() 
    { 
    // pull in data from anywhere ... 
    } 
} 

인터페이스가 파생하는 클래스의 구조를 설명하기 위해 사용 된 것으로, 서로 다른 클래스를 추가하려는 경우가 가장 좋은 방법 모두 동일한 방법을 제공합니다. 또 다른 이점은 클래스가 하나의 상위 클래스 (즉, Cart 클래스) 만 확장 할 수 있지만 여러 인터페이스를 구현할 수 있다는 것입니다.

객체 인터페이스는 클래스가 구현해야하는 방법을 지정하는 코드를 만들 수 있도록 이러한 방법은 방법을 정의 할 필요없이, : 여기에 내가이 패턴이 귀하의 요구 사항에 맞는 것이라고 생각하는 이유에 밑줄을 하나 발췌입니다, interfaces on PHP.net에 대해 자세히 알아보기 처리.

+0

나는 인터페이스와 추상 클래스를 사용하여 나중에 생성 할 메소드를 구현하고 약간의 기능을 제공하고자했습니다. –

+0

그렇다면 왜 대신 추상 클래스로 전환 했습니까? 내가 생각할 수있는 유일한 장점은 부모 클래스의 프로그래밍 로직과 하위 클래스의 (추상) 함수의 클래스 종속 구현을 제공하는 것입니다. – SaschaM78

관련 문제