如何在 CakePhp 2.3 中只执行一次与模型相关的代码

How do I execute model-related code only once in CakePhp 2.3

我想要的:
我有一个带有成员函数 update 的模型 Version。我希望每次加载页面时调用一次此成员函数。

到目前为止我做了什么:
我目前的方法是添加行

ClassRegistry::init('Version')->update();

进入AppController

beforeFilter()方法

以前的解决方案是,将以下代码放入 app/Config/bootstrap.php:

App::uses('CakeEventManager', 'Event');
CakeEventManager::instance()->attach(
    function(){
        AppModel::getSingletonModel('Version')->update();
    },
    'Controller.startup'
);

getSingletonModel 听起来像 - 获取模型的单例实例)

问题:
两种解决方案都有效,但是 如果加载了多个控制器,该函数将被调用多次。这会占用资源。
另外,执行bootstrap.php时,ClassRegistry还没有加载。所以我不能直接调用那里的函数。

附加信息:
调用多个控制器的(技术)原因似乎是,在仪表板视图中,某些内容是通过调用 $this->requestAction 生成的。

我的问题:
在 CakePHP 中有没有办法只调用一次函数,就像文件 app/Config/bootstrap.php,但是 加载模型之后?

一些背景: 我正在与其他开发人员一起在 CakePHP 2.3 中开发一个项目。
我正在开发一个自动更新系统,开发人员可以在其中添加一些他们想要 运行 一次的代码(例如,为添加的功能调整数据库)。

看来我刚刚问错了问题。

我通过在 bootstrap.php

中加载 ClassRegistry 使其工作
App::uses('ClassRegistry', 'Utility');
ClassRegistry::init('Version')->update();