コントローラ - Controller_Neapiクラス

コントローラ - Controller_Neapiクラス

ここでは、ネクストエンジンAPIを使用するコントローラの基底クラスである、Base\Controller_Neapiについて説明いたします

beforeメソッド

beforeメソッドの処理は以下の通りです

  1. ネクストエンジンAPIクライアントのインスタンスを格納
  2. ネクストエンジンAPIクライアントのインスタンスにログイン済みのユーザ情報をセット

2でセッションに格納されたユーザ情報ではなく、DBの内容を取得しているのは、

セッションに保存されたアクセストークンが途中で使用期限切れになり、DBの値が更新される恐れがあるためです

そのため、常にDBから最新のアクセストークンを取得しています

つまり、画面遷移をするたびにSELECTが実行されます

しかし、最新のアクセストークンを常に取得する必要が有るため、このような処理にしております

abstract class Controller_Neapi extends Controller_Base {
    /**
     * ネクストエンジンAPIクライアントのインスタンスを格納する
     * @var \Nextengine\Api\Client
     */
    protected static $client;

    /**
     * APIを使用する画面で共通処理として必要な処理、クライアントの初期化を行う。
     * 
     * @return void
     */
    public function before()
    {
        parent::before();

        if(is_null($this->user)) {
            \Response::redirect('/auth/login');
        }

        self::$client = new \Nextengine\Api\Client_Router();
        self::$client->setUser($this->user);
    }
}

Controller_Neapiクラスを継承したクラスのデモ

fuel/modules/demo/classes/controller/api.phpに、

Controller_Neapiクラスを継承したクラスのデモとして、Controller_Apiクラスを定義しています

ネクストエンジンアプリ基盤を動かすページのAPIを試すで使用したクラスです

このクラスのコードを説明いたします

namespace Demo;

class Controller_Api extends \Controller_Neapi {
    public function action_find()
    {
        $data = array(
            'products' => self::$client->apiExecute('/api_v1_master_goods/search', array(
                'fields' => 'goods_id,goods_name,stock_quantity,supplier_name',
                'limit'  => 5
            )),
            'divisions' => array(
                'order'  => self::$client->apiExecute('/api_v1_system_order/info'),
                'credit' => self::$client->apiExecute('/api_v1_system_credittype/info'),
            )
        );

        $this->template->title = 'Demo » Api » find';
        $this->template->content = \View::forge('api/find', $data);
    }
}

Controller_Neapiクラスを継承しているため、親クラスのbefore()でインスタンスが初期化され、

self::$clientでネクストエンジンAPIクライアントのインスタンスにアクセスできます

ネクストエンジンAPIを使用するには、apiExecuteメソッドを実行します

apiExecuteメソッドの説明は、SDKのドキュメントを御覧下さい

使用できるAPI一覧は、APIのドキュメントを御覧下さい


Controller_Neapiを継承する際に気をつけること

ネクストエンジンAPIを使用しないアクションを混在させない

Controller_Neapiを継承すると、アクセスのたびにセッションを見に行き、

セッションにユーザ情報が保存されていなければ認証処理へリダイレクトしてしまいます

そのため、ネクストエンジンへのログインが不要なアクションを、コントローラ内に混在させないで下さい

設計レベルで、ネクストエンジンAPIを使用する必要が有る・無いを分けてコントローラを実装して下さい


更新履歴
  • 2015/02/17: コントローラ - Controller_Neapiクラスページ作成