Zend-framework-controllers

提供:Dev Guides
移動先:案内検索

Zend Framework-コントローラー

前に説明したように、*コントローラー*はZend MVCフレームワークで重要な役割を果たします。 アプリケーション内のすべてのWebページは、コントローラーで処理する必要があります。

Zend MVCフレームワークでは、コントローラーは– Zend/Stdlib/DispatchableInterfaceを実装するオブジェクトです。 DispatchableInterface には dispatch という1つのメソッドがあり、これは Request オブジェクトを入力として取得し、何らかのロジックを実行し、 Response オブジェクトを出力として返します。

dispatch(Request $request, Response $response = null)

「Hello World」を返すControllerオブジェクトの簡単な例は次のとおりです-

use Zend\Stdlib\DispatchableInterface;
use Zend\Stdlib\RequestInterface as Request;
use Zend\Stdlib\ResponseInterface as Response;
class HelloWorld implements DispatchableInterface {
   public function dispatch(Request $request, Response $response = null) {
      $response->setContent("Hello World!");
   }
}
*DispatchableInterface* は基本的なものであり、高レベルのコントローラーを作成するには他の多くのインターフェイスが必要です。 このようなインターフェイスのいくつかは次のとおりです-
  • InjectApplicationEventInterface -イベントの注入に使用(Zend EventManager)
  • ServiceLocatorAwareInterface -サービスの検索に使用(Zend ServiceManager)
  • EventManagerAwareInterface -イベントの管理に使用(Zend EventManager)

これらのことを念頭に置いて、Zend Frameworkはこれらのインターフェイスを実装する既製のコントローラーを多数提供します。 最も重要なコントローラーは以下に説明されています。

AbstractActionController

AbstractActionController(Zend/Mvc/Controller/AbstractActionController)は、Zend MVCフレームワークで最も使用されているコントローラーです。 典型的なウェブページを書くために必要なすべての機能を備えています。 ルート(ルーティングはリクエストURLをコントローラーとそのメソッドの1つに一致させます)が*アクション*に一致することを許可します。 一致すると、アクションにちなんで名付けられたメソッドがコントローラーによって呼び出されます。

たとえば、ルート test が一致し、ルート、 test がアクションに対して hello を返す場合、 helloAction メソッドが呼び出されます。

*AbstractActionController* を使用して *TutorialController* を記述しましょう。
  • AbstractActionController を拡張して TutorialController という新しいPHPクラスを作成し、 module/Tutorial/src/Controller/ ディレクトリに配置します。
  • Tutorial \ Controller をネームスペースとして設定します。
  • indexAction メソッドを記述します。
  • indexAction メソッドから ViewModel オブジェクトを返します。 ViewModel オブジェクトは、コントローラからビューエンジンにデータを送信するために使用されます。これについては、以降の章で説明します。

完全なコードリストは次のとおりです-

?php
namespace Tutorial\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class TutorialController extends AbstractActionController {
   public function indexAction() {
      return new ViewModel();
   }
}

新しい TutorialController が正常に追加されました。

AbstractRestfulController

AbstractRestfulController(Zend \ Mvc \ Controller \ AbstractRestfulController)は、着信要求のHTTP method を検査し、HTTPメソッドを考慮してアクション(メソッド)と一致します

たとえば、GET HTTPメソッドを使用したリクエストは、 id パラメータがリクエストで見つかった場合、* getList()メソッドまたは get()*メソッドと一致します。

AbstractConsoleController

AbstractConsoleController(Zend \ Mvc \ Controller \ AbstractConsoleController)はAbstractActionControllerに似ていますが、ブラウザではなくコンソール環境でのみ実行される点が異なります。