我有一个静态方法的类,我想在调用方法之前拦截方法调用.
所以,如果我打电话
$model = DataMapper::getById(12345);
Run Code Online (Sandbox Code Playgroud)
然后我希望在调用此方法之前调用DataMapper中的某个方法,然后可选地,此拦截方法可以随后调用self :: getById(12345).有没有办法做到这一点?
我正在我的服务器上实现Memcache,所以这就是我想拦截方法调用的原因.如果模型已经被缓存,我不希望静态方法查询数据库,并且我也不想冗余地修改数百种不同的映射器方法来支持memcache.
我正在运行PHP 5.2.6.
这可以完成工作: 即使方法存在,在 PHP 中触发 __call()
只需声明您的静态方法,protected以便它们在类外部无法访问,并获取__callStatic()调用它们的魔术方法。
编辑:哎呀,你需要 5.3 才能做到这一点......