2013-01-14 4 views
5

두 개의 구성 요소가있는 프로젝트에서 작업 중입니다.동일한 서버에있는 두 PHP 응용 프로그램 간의 통신?

1) 하나는 내 모든 사용자 지정 코드를 작성하는 CodeIgniter 프레임 워크입니다.

2) 다른 하나는 Amazon의 MWS API 용 PHP SDK 라이브러리입니다.

내 CodeIgniter 코드와 Amazon SDK 모두 자체 autoload()가 필요합니다.

Amazon의 SDK는 또한 3-4 개의 구성 요소로 나뉘며 각 구성 요소는 자체로드 기능을 가지고 있으므로 동일한 세션에서 제품 SDK 및 Reports SDK로 작업하려면 이미 정의 된 자동로드 기능.

이러한 이유 때문에 동일한 서버에 있더라도 내 코드와 Amazon SDK 파일 간의 통신을 위해 웹 서비스 시스템을 설정하는 것이 좋습니다.하지만 적어도 이러한 방식으로 명명 충돌이 발생할 수 있습니다. 피하십시오. 즉 Amazon의 SDK를 처리 할 CodeIgniter 외부 파일에 HTTP 요청을 보내고 JSON 또는 XML로 응답을 반환합니다.

SDK의 각 파일/클래스를 살펴보고 네임 스페이스 문을 추가하고 싶지 않기 때문에 네임 스페이스가 옵션이라고 생각하지 않습니다.

제 질문은이 방법에 대해 알고 있어야하는 성능 문제가 있습니까? 그리고이 방법을 피할 수있는 네임 스페이스와 다른 방법이 있습니까?

+0

I 라이브러리가 SPL 자동 공급기를 사용하는 경우 몇 대가 함께 공존 할 수 있다는 인상하에있었습니다. 그들은 모두''__autoload()''함수를 ​​실제로 사용합니까? 두 개의 아마존 패키지가 이런 이유로 잘 작동하지 않는다면 다른 누군가가 벌레/개선 티켓을 벌써 올렸을 것이라고 생각한다. – halfer

+0

@halfer 최신 SDKS를 다운로드했는데 예전에'__autoload'를 사용했습니다. –

+0

여러 항목을 함께 사용할 수 없다는 것이 얼마나 이상합니까! 이미 존재하지 않는다면, 이것에 대한 표를 올릴 수 있습니다. 또 다른 접근 방법은 아마존과 CI에 대한 오토로더를로드하지 않고 모두 접착 할 수 있도록 직접 작성하는 것입니다. – halfer

답변

1

그냥 별도의 파일에 자신의 자동 로더 기능을 복사, 그 이름을 변경하고, 따라서 spl_autoload_register로를 연결 :

<?php 
function loadFrameworkOne($name) { 
    // contents of __autoload from framework one. 
} 
function loadFrameworkTwo($name) { 
    // contents of __autoload from framework two. 
} 
spl_autoload_register('loadFrameworkOne'); 
spl_autoload_register('loadFrameworkTwo'); 

이 빠르고 더러운 내 머리 위로 떨어져있다)