laravel中是否有可能保持控制器对象的状态?
在我发现的每个例子中,控制器都采用以下方式:
class MyController extends Controller {
public function getView(){ //return the view }
public function postData() { //save the data }
}
我要做的是调用一个服务,该服务从我的数据库加载特定数据并将其返回到视图。在上面的例子中,这应该在getView()函数中完成。如果我在postData()函数中需要相同的数据怎么办呢?那么我必须在postData函数中进行另一个数据库调用。由于在laravel中路由,因此无法在“MyController”中拥有成员变量并仅为该类加载一次数据。当我通过路由getView函数调用时,如果我调用postData,我得到MyController的另一个实例。是否有可能只为整个控制器调用一次特定的函数,并从控制器内的所有函数中访问这些值?
答案 0 :(得分:1)
是否有可能只为特定功能调用一次 整个控制器,并从所有的访问权限 控制器内的功能?
根据我的理解,这是不可能的。实际上,控制器的任何功能都是通过路由调用的。每次创建控制器的新对象时,都会调用任何路径。但它还有其他方式。您可以使用缓存。您可以按如下方式实现它:
只需编码如下:
} ?>
<!DOCTYPE html>
语法说明:
Use Cache;
class MyController extends Controller {
public function getView(){
$data = call_to_database_and_returned_data();
Cache::put('data',$data,120);
return the view
}
public function postData() {
$data = null;
if(Cache::has('data')) {
$data = Cache::get('data');
} else {
$data = call_to_database_and_returned_data();
Cache::put('data',$data,120);
}
}
}