拦截对PHP中方法的调用

Cha*_*son 5 php memcached

我有一个静态方法的类,我想在调用方法之前拦截方法调用.

所以,如果我打电话

$model = DataMapper::getById(12345);
Run Code Online (Sandbox Code Playgroud)

然后我希望在调用此方法之前调用DataMapper中的某个方法,然后可选地,此拦截方法可以随后调用self :: getById(12345).有没有办法做到这一点?

我正在我的服务器上实现Memcache,所以这就是我想拦截方法调用的原因.如果模型已经被缓存,我不希望静态方法查询数据库,并且我也不想冗余地修改数百种不同的映射器方法来支持memcache.

我正在运行PHP 5.2.6.

bri*_*vis 1

这可以完成工作: 即使方法存在,在 PHP 中触发 __call()

只需声明您的静态方法,protected以便它们在类外部无法访问,并获取__callStatic()调用它们的魔术方法。

编辑:哎呀,你需要 5.3 才能做到这一点......