2016-10-03 10 views
1

SlimとPHPの新機能ですが、Slimで単純な残りのAPIを実行しようとしています。それは働いていますが、私はそれを正しい方法でやっているのかどうかわかりませんし、別の方法ではできません。例えばSlim PHP - リクエストとレスポンスのオブジェクトを使用する正しい方法

、私はそのようなルートました:

$app->get('/contacts', '\Namespace\Class:method'); 

方法:だから

public function searchContacts($request, $response) { 

     return Contact::searchContacts($resquest, $response); 
    } 

を、私は他のクラスからのリクエストとレスポンスにアクセスすることが分かっユニークな方法で渡すことですオブジェクトをparamsとして返します。それは正しいのですか、それを行うにはより良い(正しい)方法がありますか?

答えて

2

あなたの方法は良くないと思います。

コントローラは要求を処理し、応答を返す必要があります。 お客様のモデル(Contact)は処理リクエストをしないでください。それは必要なparamsとreturnデータを取るべきです。

簡単な例:

public function searchContacts($request, $response) 
{ 
    // to example, you pass only name of contact 
    $results = Contact::searchContacts($request->get('contactName')); 
    $response->getBody()->write(json_encode($results)); 

    return $response; 
} 

あなたは他のクラスからRequestResponseオブジェクトにアクセスする必要はありません。必要な場合は、アーキテクチャが間違っている可能性があります。公式サイトからの

良い例:http://www.slimframework.com/docs/tutorial/first-app.html#create-routes

+0

今はっきりしています。ありがとう! – Alan

0

最も簡単な方法は、のparamsから値を取得し、方法で応答を受け取ったことです。

$app->get('/contacts', function (Request $request, Response $response) { 
    $Contactname = $request->getAttribute('contact'); 
//You can put your search code here. 
    $response->getBody()->write("Contact name is, $name"); 

    return $response; 
}); 
関連する問題