1

Zend Frameworks と MVC 型プログラミング (PHP ではありません) は初めてで、Zend Framework を使用してサーバー上のデータへの API アクセスを提供しようとしています。

Chris Danielson の記事 ( http://www.chrisdanielson.com/2009/09/02/creating-a-php-rest-api-using-the-zend-framework/ ) をベースとして使用しています。

次の形式のデータへのアクセスを提供したいと考えています。

(a) http://www.example.com/api/createevent      
    Data will be POSTed here, success will return an id, otherwise an 
    error message/code

(b) http://www.example.com/api/geteventdetails/1234     
    GET request will return data

(c) http://www.example.com/api/getregistrationdetails/1234  
    GET request will return data

(d) http://www.example.com/api/getregistrationdetails/1234/567  
    GET request will return data

質問:

  1. \api\application\controllers\VersionController.php にデフォルトのファイルがあり、これによりhttp://www.example.com/api/versionタイプの URL の処理が可能になります。\api\application\controllers\GeteventdetailsController.php にある別のファイルを作成する必要がありますか? これは、タイプ (b) のリクエスト (およびすべてのタイプのリクエストに対して 1 つ) を処理しますか? そうでない場合、これらの複数の要求タイプを処理するためにコードをどこに配置すればよいですか?

  2. (b) から (d) に渡されたパラメーターを取得するにはどうすればよいですか?

  3. 要求 (b) から (d) を実行するには、サーバーのデータベースから情報を取得する必要があります。実際の MySQL クエリを実行するコードはどこに配置すればよいですか?

4

1 に答える 1

0

私はZFでルートを頻繁に使用しましたが、Restの実装ではなく、ドキュメントとリンク先のチュートリアルをたたきました-私はあなたを助けるために最善を尽くします...

Restルーターのドキュメント(ページの約1/3)を確認する価値があるかもしれません。これは、リクエストの方法に基づいて自動的にルートを作成することを説明しています。したがって、 createeventgeteventdetailsなどの命名形式は必要ありません。

質問1。

ファイルを作成するのではなく

\ api \ application \ controllers \ GeteventdetailsController.php

ファイルを作成します

\ api \ application \ controllers \ EventsController.php

これは、get、posting、putingなどのすべてのイベントアクションを処理する1つのコントローラーになります。get、putなどはアクションレベルで処理されるため、提案はコントローラーに対して具体的すぎます。

質問2。

ドキュメントで説明されているルートは、最後のパラメーター(:id)がコントローラーのパラメーターに割り当てられることを示していますid

したがって、 GETを使用してURL / events /にアクセスすると、ファイル内のが呼び出されますindexAction()EventsController.php

また、 GETを使用してURL / events / 99 /にアクセスすると、ファイル内のが呼び出されます。このIDには、このようにコントローラーからアクセスできます。getAction()EventsController.php

$id = $this->getRequest()->getParam("id");

また

$id = $this->getRequest()->id;

次に、イベントのリストまたは特定のIDをデータベースに照会するコードを作成する必要があります。それは私たちをうまくもたらします...

質問3。

データベースにイベントを照会するためのコードをコントローラーに配置するのではなく、データベースのテーブルと行のモデルを作成する必要があります。これを行うには、 Zend_Db_RowおよびZend_Tb_TableのZFの既存のセットアップを使用することをお勧めします。これにより、アプリケーション/WebサイトがMVCであることが保証されます。

コードをコントローラー内に配置すると、後の開発が妨げられる可能性があります。たとえば、後日、別のコントローラーでイベントの登録フォームを作成する場合などです。イベントを作成するためのロジックは、新しいコントローラーに1回、Restコントローラーに1回、複製されます。このロジックを、イベントを操作および照会するためのモデルに一元化することをお勧めします。

お役に立てば幸いです。

于 2011-03-16T22:31:25.063 に答える