1

URI "/service/add" , "/service/update" がヒットしたとき. Service Class の $service class メンバを更新したい。基本的に、以下の問題「 Issue#101 」を処理する永続オブジェクト: .

基本的に、Router.php から別のコントローラーを呼び出して、同じ $service 配列を更新 (いくつかの配列キー、つまりサービスの追加/更新/削除) したいと考えています。

どうすればこれを達成できますか。$service 配列だけを更新したいので、それらをデータベースに保存したり、他のコントローラーにフェッチしたりしません。

この場合:

  • $service 配列だけをデータベースに保存することは決してありません。(コントローラーからモデルを呼び出す)
  • 機密情報が含まれている場合、セッションへの保存はデータのリスクにつながる可能性があり、他のシナリオでは $service が大きなオブジェクトである可能性があります。

問題 #101 : 問題は、異なるコントローラー間でサービス クラスからの $service 状態を保持することです。

Router.php

post('/service/add',ControllerService/service_add_function);
post('/service/update',ControllerService/service_update_function);

ControllerService.php

class ControllerService extends BaseController{
    service_add_function(){
        $service = getPostData();

        $instance = Service::getInstance();
        $addedService = $instance->addService($service);

        //issue#102:

    }

    service_update_function(){
        $service = getPostData();

        $instance = Services::getInstance();

// **issue #101**: getService returns null but I want to get $service value
// added from service_add_function() controller

        $oldService = $instance->getService()

        // modify $oldService values by validating $oldService[key]

        $newService = $instance->addService($oldService);

        //rendering service template with updated service list
        VIEW::render(service.tpl,$newService);

    }
}

Services.php

class Services{
    static $instance = NULL;
    $service = array();
    static function getInstance(){
        if($instance === NULL)
            self::$instance = new Services();
        return self::$instance
    }

    addService($service){
        // I will do service[key] validation
        $this->service = $service;
    }

    getService(){
        return $this->service;
    }
}

オブジェクトが手動で破棄されるのではなく、php スクリプトの実行が終了したときに破棄されるまで、そのようなパターンがライフサイクル全体でオブジェクトの状態を維持する場合、デザイン パターンによる問題解決は高く評価されます。

4

0 に答える 0