2011-02-04 5 views
2

PHP를 사용하여 가능한 한 쉽게 추가 할 수있는 모듈 식 시스템을 설계하는 가장 좋은 방법은 무엇입니까? 예를 들어 장바구니가있는 경우 모든 필수 메소드가있는 지불 기본 클래스가있을 수 있습니다. 그런 다음 해당 클래스를 확장하는 Paypal 클래스와 기본 클래스를 확장하는 Visa/Mastercard를 가질 수 있지만 실제로 어떻게 사용합니까?PHP : 모듈 형 지불 시스템을위한 최상의 설계?

장바구니 기능 버전을 수행 한 경우 doExecute이라는 기능을 만들어 필요한 정보를 전달할 수 있습니다. 그런 다음 모든 파일의 이름을 Payment_Method.php으로 지정합니다. 파일 이름을 읽은 다음 허용되는 지불 방법 목록을 작성합니다. 일단 파일이 선택되면 해당 파일이 스크립트에 포함 된 유일한 파일이고 그 다음에 doExecute 메쏘드가 호출되어 지불 메소드 include 파일의 메소드가 호출 된 메소드임을 보장합니다.

그러나 객체 지향 접근법의 경우 실제로 그렇게 잘 작동합니다. 새 클래스의 객체를 포함하도록 코드를 수정하지 않고도 추가 메서드를 어떻게 추가합니까?

답변

0

나는이처럼 결제 시스템을 구현 한 방법을 도움이되기를 바랍니다 언급 한대로 기본 클래스를 가지지 만 기본 클래스는 기본 클래스를 확장하는 필수 지불 공급 업체를 인스턴스화하게합니다. 모든 공급 업체가 서로 다른 데이터 제출 구조를 가지고 있기 때문에 그런 기본 클래스는

public function loadVendor($vendorName) { 
    static $validVendors = array('credit_card','paypal'); 
    if (!in_array($vendorName, $validVendors) { 
     return false; 
    } 
    include('/path/to//vendors/'.$vendorName.'.php'); 
    $processor = new $vendorName(); 
    //additional default setup 
    return $processor 
} 

등, 로깅, 제어를 중앙 집중화,로드되는 어떤 파일을 제어합니다. 기본 클래스에는 데이터를 "로드"하는 기능이 있어야합니다. 표준 형식으로 입력하십시오. 각 지불 클래스는 구조를 구조에 맵핑하는 "맵"기능을 갖습니다. 예를 들어 날짜를 별도의 년, 월, 일 필드로 나눕니다.

그러면 처리 공급 업체에 데이터를 제출하는 "제출"기능이 있습니다. 그런 다음 "구문 분석 응답"기능을 사용하여 응답을 구문 분석하고이를 표준화 된 응답 데이터 구조에 넣습니다. .

단순화하기 위해, 당신은 모든 기능 세 가지를 호출하는 하나의 방법을 가질 수 있습니다 (-지도에서> submit->지도 그러나 테스트를 위해, 그것은 쉽게 그들을 분리해야합니다 $ 프로세서 -> mapData을(). 을 $ processor-> submit(); $ response = $ processor-> parseResponse();

물론 이것은 실제로 Paypal에서 작동하지 않습니다.페이팔은 비동기식으로, 사용자는 사이트로 이동합니다. 페이팔 (Paypal)은 처리가 끝나면 다시 귀하의 사이트로 보냅니다. 구글 체크 아웃도 같은 방법입니다.

0

내가 그것을 이런 식으로 할 것이다 : (당신이 언급 한 것처럼)

모든 결제 시스템에 대한 각각의 결제 시스템을 기본 클래스를 사용하여을 (. 예를 들어, 페이팔) 결제 클래스를 확장하고 모두를로드 할 수 있습니다 PHP 파일 .. 그냥 파일에 해당하는 이름을 가지고 있는지 확인하고 그 반대도 마찬가지입니다.

그런 다음 결제 옵션이 선택되면 단일 파일을로드하는 대신 해당 인스턴스의 개체를 만들 수 있습니다. $ activePaymentGateway 또는 그와 비슷한 것에서 항상 그 객체를 같은 이름이라고 부릅니다.

그런 다음 $ activePaymentGateway-> processPayment (500, 'EUR')를 호출하면; (또는 귀하의 예제에서처럼 -> doExecute()) 무엇이든간에, 해당 클래스는 그곳에서 일어나는 일을 알아야합니다.

각 클래스는 실제로 기본 클래스에서 상속해야하는 일 외에 공용 함수를 정의해서는 안

나는

관련 문제