ZendFramework-コントローラー

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

Zend MVCフレームワークでは、コントローラーは– Zend / Stdlib / DispatchableInterfaceを実装するオブジェクトです。ザ・DispatchableInterface 単一の方法があります、 dispatchRequest 入力としてのオブジェクト、いくつかのロジックを実行し、 Response 出力としてのオブジェクト。

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

「HelloWorld」を返す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)は、ZendMVCフレームワークで最も使用されているコントローラーです。それは典型的なウェブページを書くために必要なすべての機能を備えています。これにより、ルート(ルーティングはリクエストURLをコントローラーとそのメソッドの1つに一致させます)を一致させることができますaction。一致すると、アクションにちなんで名付けられたメソッドがコントローラーによって呼び出されます。

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

私たちを書いてみましょう TutorialController を使用して AbstractActionController

  • と呼ばれる新しいPHPクラスを作成します TutorialController を拡張することによって AbstractActionController に配置します module/Tutorial/src/Controller/ ディレクトリ。

  • をセットする Tutorial\Controller 名前空間として。

  • 書く indexAction 方法。

  • を返す ViewModel からのオブジェクト indexAction方法。ザ・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メソッドを使用したリクエストは、 getList() メソッドまたは get() メソッド、 id パラメータがリクエストにあります。

AbstractConsoleController

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