拦截对已定义 PHP 方法的调用
Intercepting calls to defined PHP methods
我正在尝试创建一个 Trait 来制作 "freezable value objects"。 (避免位置参数和伸缩构造函数。)这意味着可以使用 setter 来初始化对象,然后调用 ->freeze()
,使对象成为 "immutable"。 setter 仍会存在,但调用时会抛出异常。这可以通过在每个 setter 开始时调用 $this->assertIsWritable();
来实现。但是我想避免这种情况(因为很容易忘记这样的电话)并自动进行此检查。有没有办法拦截对已定义方法的调用?
解决方案不可接受:
- 破坏类型提示的方法and/or静态代码分析
- 对特殊 PHP 扩展的依赖
我正在使用 PHP 7.0.
我正在尝试创建一个 Trait 来制作 "freezable value objects"。 (避免位置参数和伸缩构造函数。)这意味着可以使用 setter 来初始化对象,然后调用 ->freeze()
,使对象成为 "immutable"。 setter 仍会存在,但调用时会抛出异常。这可以通过在每个 setter 开始时调用 $this->assertIsWritable();
来实现。但是我想避免这种情况(因为很容易忘记这样的电话)并自动进行此检查。有没有办法拦截对已定义方法的调用?
解决方案不可接受:
- 破坏类型提示的方法and/or静态代码分析
- 对特殊 PHP 扩展的依赖
我正在使用 PHP 7.0.