当 URI "/service/add" , "/service/update" 命中.. 我想更新服务类的 $service 类成员。基本上是一个持久对象来处理以下问题“问题#101 ” :。
基本上我想通过从Router.php调用不同的控制器来更新(添加/更新/删除一些数组键,即服务))相同的$service数组。
我怎样才能做到这一点。因为我只想更新 $service 数组,所以我没有将它们存储到数据库中并提取到其他控制器中。
在这种情况下:
- 仅将 $service 数组存储到数据库中绝不是一种选择。(从控制器调用模型)
- 存储到 session 可能会导致数据风险,如果它包含敏感信息并且 $service 在某些其他情况下可能是大对象。
问题#101:问题是跨不同控制器保留服务类的 $service 状态。
路由器.php
post('/service/add',ControllerService/service_add_function);
post('/service/update',ControllerService/service_update_function);
控制器服务.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);
}
}
服务.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 脚本执行结束时被销毁,那么使用设计模式解决问题将受到高度赞赏。