我正在尝试创建一个 Trait 来制作“可卡住值对象”。 (避免位置参数和伸缩构造函数。)这意味着可以使用 setter 来初始化对象,然后调用 ->freeze()
,使对象“不可变”。 setter 仍会存在,但调用时会抛出异常。这可以通过在每个 setter 的开头调用 $this->assertIsWritable();
来实现。但是我想避免这种情况(因为很容易忘记这样的电话)并自动进行此检查。有没有办法拦截对已定义方法的调用?
在解决方案中 Not Acceptable :
- 破坏类型提示和/或静态代码分析的方法
- 对特殊 PHP 扩展的依赖
我正在使用 PHP 7.0。
最佳答案
关于php - 拦截对定义的 PHP 方法的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34756926/