Zend-framework-controllers
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に似ていますが、ブラウザではなくコンソール環境でのみ実行される点が異なります。