2012-02-25 16 views
2

私が再構築しているウェブサイトでは、ほとんどのコンテンツ(たとえばhttp://api.example.com/)を収集するために独自のAPIを使用しています。これに対する答えはかなり自明ですが、私が進める前に確かめたいだけです。ページにAPIを含める最も効率的な方法は何ですか?

私の知る限り、PHP経由でAPIからデータを読み込む2つのオプション(潜在的に3つ)があります。

  1. 私はドキュメントにクラスをロードし、クラスから手動でデータを収集する(おそらく最良の方法が、より多くのコードを必要とし、変更がクラスに行われた場合、私はページとAPIを変更することができますAPIを変更するのではなく、ドキュメントに記載してください)
  2. file_get_contents('http://api.example.com/search')を使用してください。これは一番簡単な方法ですが、別のHTTPリクエストが必要ですが、少し遅いと思います。
  3. 最後に、もしこれが可能であれば、私はそれが最良の方法だと思っていますが、私の知る限り、それは可能ではないと思います。ファイルを$_GETのパラメータを実装してローカルに読み込み、この方法で結果を取得します。これは、可能であればください

    $API = 'http://api.example.com/search?query=test' 
    $data = file_get_contents(url_encode($API)); 
    

    3. わからない(無視するミス)のような

1.

// Include the mysql connections 
require_once($_SERVER['DOCUMENT_ROOT'].'/scripts/php/_connections/mysql.company.php'); 

// Include the Classes (Company and Facebook) 
require_once($_SERVER['DOCUMENT_ROOT'].'/scripts/php/_classes/class.company.php'); 
require_once($_SERVER['DOCUMENT_ROOT'].'/scripts/php/_classes/class.mysql.php'); 
require_once($_SERVER['DOCUMENT_ROOT'].'/scripts/php/_facebook/config.facebook.php'); 
require_once($_SERVER['DOCUMENT_ROOT'].'/scripts/php/_facebook/class.facebook.php'); 

// Create the objects (Company, MySQL, Memcache and Facebook) 
$memcache = new memcache; 
$facebook = new Facebook($facebook_config); 
$mysql = new mysql($memcache); 
$company = new company($_DATABASES,$_CONNECTIONS,$mysql,$memache,$facebook); 

// CALL THE RELEVANT CLASS METHOD HERE 

2. 何か注意してください。私はきれいに包まれたクラスのセットアップが作業がはるかに容易になるだろうと確信しているほとんどの場所でのOAuthなどとのAPIは、これらの日です - 最後の方法は、

$parameters = array(
    'method'=>'GET', 
    'parameters'=>array(
     'function'=>'search', 
     'query'=>'test' 
    ) 
); 
$API = some_cool_function('/_scripts/api/2/api/api.php',$parameters); 

// I DO NOT WANT TO DO THIS FOR CERTAIN REASONS: 
$_GET=array(
    'function'=>'search', 
    'query'=>'test' 
); 
$data = include('/_scripts/api/2/api/api.php'); 

答えて

2

は、通常、私は第一選択肢を言うと思います。

+0

ありがとうございます。 3番目の選択肢は不可能ですか? –

+0

私はそれがapi.phpの内容に依存するだろうと思っていますが、手作業で$ _GETを書き込むだけでは大したことではありません。方法2と3は単純で素晴らしいものに見えますが、現実には年齢がひどくなり、問題が終わることはありません。単純に更新できるクラスでは、メソッド呼び出しなどを変更する必要はほとんどありません。さらに、$ dataにすべてを固定してください。本当にやっているのは奇妙なことではありません。 – BenOfTheNorth

+1

api.phpは、API関数の結果としてJSONでエンコードされた文字列を返します。そのため、$ dataに結果が与えられます。 $ _GETパラメータを設定してファイルをインクルードすることは悪い習慣であることにもっと同意できませんでした。それはひどい練習です! –

関連する問題