加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

拦截对已定义的PHP方法的调用

发布时间:2020-12-13 16:00:13 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试创建一个Trait来制作“freezable value objects”. (避免位置参数和伸缩构造函数.)这意味着setter可用于初始化对象,然后调用 – freeze(),这使得对象“不可变”.设置者仍然会在那里,但是在被叫时,他们会抛出异常.这可以通过$this- assertIsWritabl
我正在尝试创建一个Trait来制作“freezable value objects”. (避免位置参数和伸缩构造函数.)这意味着setter可用于初始化对象,然后调用 – > freeze(),这使得对象“不可变”.设置者仍然会在那里,但是在被叫时,他们会抛出异常.这可以通过$this-> assertIsWritable()来实现;在每个二传手的开始时打电话.但是我想避免这种情况(因为很容易忘记这样的调用)并自动进行检查.有没有办法拦截对已定义方法的调用?

解决方案中不可接受:

>打破类型提示和/或静态代码分析的方法
>依赖于特殊的PHP扩展

我正在使用PHP 7.0.

解决方法

如果不修改运行时(使用 Runkit或 uopz等扩展或在加载PHP代码时对PHP代码执行源代码转换(使用流包装魔术),则无法做到这一点.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读