2013-01-14 31 views
5

私は2つのコンポーネントを持つプロジェクトに取り組んでいます:同じサーバー上の2つのPHPアプリケーション間の通信?

1)私はカスタムコードをすべてビルドする予定のCodeIgniterフレームワークです。

2)もう1つはAmazonのMWS API用PHP SDKライブラリです。

私のCodeIgniterコードとAmazonのSDKの両方で、独自のautoload()が必要です。

AmazonのSDKもさらに3-4個のコンポーネントに分割されており、それぞれ独自の自動ロード機能を備えているため、同じセッションでProducts SDKとReports SDKを使用する場合は、すでに定義されているオートロード機能

私は自分のコードとAmazonのSDKファイルが同じサーバー上にあっても、それらの間の通信のためのWebサービスシステムを設定することを考えていますが、少なくともこのように命名の競合は避けてください。私はAmazonのSDKを扱うCodeIgniter以外のファイルにHTTPリクエストを送信し、JSONまたはXMLで応答を返します。

私はSDKの各ファイル/クラスを調べて名前空間ステートメントを追加したくないので、名前空間はオプションではないと思います。

私の知るべきことであるが、私の知るべきことであるが、この方法の性能に関する問題はあるか?そして、この方法が避けることができる名前空間とは別の方法がありますか?

+0

私はライブラリがSPLオートローダを使用する場合、複数のライブラリが共存できるという印象を受けました。彼らはすべて本当に従来の '__autoload()'関数を使用していますか?私は、2つのAmazonパッケージがこのような理由でうまく機能しない場合、誰かがそれをバグ/改善チケットとして既に持ち上げていたと考えるべきです。 – halfer

+0

@halfer私は最新のSDKSをダウンロードしました。ちなみに、彼らは従来の '__autoload'を使用しています –

+0

いくつか一緒に使うことはできません。さて、もしすでに存在していなければ、これについての切符を発行します。もう1つのアプローチ:Amazonと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'); 

これは、迅速な汚いと私の頭の上からです;)

関連する問題