我想要的是什么:
我有一个模型Version
,其成员函数为update
。我希望每次加载页面时都调用一次这个成员函数。
到目前为止我做了什么:
我目前的做法是添加行
ClassRegistry::init('Version')->update();
进入beforeFilter()
AppController
方法
之前的解决方案是将以下代码放入app/Config/bootstrap.php
:
App::uses('CakeEventManager', 'Event');
CakeEventManager::instance()->attach(
function(){
AppModel::getSingletonModel('Version')->update();
},
'Controller.startup'
);
(getSingletonModel
执行听起来的样子 - 获取模型的单例实例)
问题:
两个解决方案都可以工作,但如果加载了多个控制器,则会多次调用该函数。这会占用资源
此外,执行ClassRegistry
时,尚未加载bootstrap.php
。所以我不能直接调用那里的函数。
其他信息:
调用几个控制器的(技术)原因似乎是,在仪表板视图中,通过调用$this->requestAction
生成一些内容。
我的问题:
CakePHP中是否有一种方法只调用一次函数,比如文件app/Config/bootstrap.php
,但模型加载后?
一些背景知识 我和其他开发人员一起在CakePHP 2.3中开发了一个项目 我正在开发一个自动更新系统,开发人员可以在其中添加一些他们想要运行的代码(例如,为了使数据库适应增加的功能)。
答案 0 :(得分:0)
看起来我刚问了错误的问题。
我通过在getQuality()
ClassRegistry
来实现效果
bootstrap.php