4
我试图创建一个特性来制作“可冻结值对象”。 (为了避免位置参数和伸缩构造函数)。这意味着setters可以用来初始化对象,然后调用->freeze()
,这使得对象“不可变”。二传手仍然会在那里,但是当被召唤时,他们会抛出异常。这可以通过在每个设置者开始时拨打$this->assertIsWritable();
来实现。不过,我想避免这种情况(因为它很容易忘记这样的呼叫),并自动进行检查。有没有办法拦截调用定义的方法?拦截调用定义的PHP方法
在溶液不接受:
- 接近于打破类型提示和/或静态代码分析在特殊的PHP扩展
- 依赖
我使用PHP 7.0。
东西可能?可能[ 'method_redefine'](http://php.net/manual/en/function.runkit-method-redefine.php)。我不知道你有什么办法可以做到这一点。 –