V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
blowing00
V2EX  ›  分享创造

写了个 PHP7 的 AOP 扩展

  •  1
     
  •   blowing00 · 2019-12-06 11:27:16 +08:00 · 3423 次点击
    这是一个创建于 1839 天前的主题,其中的信息可能已经有所发展或是发生改变。
    github 地址: https://github.com/nanhao/easy_aop

    由于 pecl 的 AOP 扩展太老了,不支持 PHP7,所以自己动手写了一个。

    -可以动态地往任意一个方法的开头和结尾添加代码,还可以进行拦截。
    -适合更好地组织日志、访问控制、统计、缓存、参数检查等切面代码。
    -高级用法还可以对开源的第三方库打定制化的补丁。

    现在发了 v1.0.1-alpha 版本,有兴趣的可以玩一玩。
    使用中遇到问题或者有建议,欢迎反馈。
    第 1 条附言  ·  2019-12-06 12:00:00 +08:00
    目前该版本是测试版,暂不推荐用于生产环境
    8 条回复    2019-12-31 22:17:50 +08:00
    codespots
        1
    codespots  
       2019-12-06 11:31:04 +08:00
    star 下,原来可以通过扩展的方式实现 aop,之前用 php 的时候没办法做到 aop,导致很多方法不得不写 N 次,很不爽
    haiyang416
        2
    haiyang416  
       2019-12-06 12:58:27 +08:00
    README 挺详细的,之前没怎么具体使用过 AOP, 文档里提到的内容让我有了一些具体的认识。
    大致扫了一遍实现代码,是通过替换 zend_execute_ex 实现的功能,想问下和 OPcache 之类的拓展兼容性如何?
    blowing00
        3
    blowing00  
    OP
       2019-12-06 13:25:48 +08:00
    @haiyang416 原理上和 OPcache 并没有冲突。OPcache 是作用在编译环节的,而这个扩展是作用在执行环节。
    如果使用了其他替换 zend_execute_ex 的扩展,则可能会出现兼容问题。
    optional
        4
    optional  
       2019-12-06 18:02:44 +08:00   ❤️ 2
    缺一个 around,有了 around,其实 before after 反而不重要了。
    xiaotuzi
        5
    xiaotuzi  
       2019-12-07 15:08:49 +08:00 via iPhone
    对于写插件非常好的支持!就是部署环境的时候,额外安装,不过对于不公开的系统,这个就比较好玩了,别人没有这个扩展,拿到源码也没法玩。
    xiaotianhu
        6
    xiaotianhu  
       2019-12-08 22:54:11 +08:00 via iPhone
    高端啊 赞一个
    solaro
        7
    solaro  
       2019-12-10 01:46:45 +08:00
    AOP 我还是没搞明白它到底干嘛? OP CODE ?
    solaro
        8
    solaro  
       2019-12-31 22:17:50 +08:00
    去提交 pecl
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3272 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 00:38 · PVG 08:38 · LAX 16:38 · JFK 19:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.