【问题标题】:Caching Dependencies in PHP在 PHP 中缓存依赖项
【发布时间】:2015-09-30 03:30:53
【问题描述】:

我有一个构建在 IoC 容器之上的小型系统。 该 IoC 容器能够通过使用反射(ReflectionClass、ReflectionMethod...)自动解析所请求类的依赖关系,并将这些依赖关系注入到类的构造函数中。

问题是我读过很多帖子说反射是一种非常缓慢的方法,每次运行都使用它是一种不好的做法。

因此,我想避免每次运行都使用反射,我的想法是缓存依赖项或请求的类。

我将缓存类的依赖关系和类代码的哈希版本,这样我就知道何时重新评估类的依赖关系(当类代码的哈希值与缓存的哈希值,换句话说,自上次评估依赖项以来代码已被修改)。

这是一个好方法还是我应该在每次运行时都坚持反思? 我主要担心这种方法是否有助于优化系统性能,还是只会减慢系统性能?

谢谢, 阿里克

【问题讨论】:

    标签: php caching reflection dependency-injection inversion-of-control


    【解决方案1】:

    问题是我读过很多帖子说反射是一种非常缓慢的方法

    所以你没有真正的问题。在您的网站出现性能问题之前,您为什么要关心?

    过早的优化是万恶之源

    【讨论】:

    • 该系统作为一个框架,为Web开发人员提供基本工具。应用程序的复杂性和可能的​​“性能问题”主要取决于使用我的框架的开发人员(可能是我,也可能不是我)。因此,我必须确保我的系统保持高效并针对任何可能的情况进行优化。
    • 很公平,这在问题中并不明显。在这种情况下,也许你可以在 PHP-DI 的源代码中找到有用的信息:github.com/PHP-DI/PHP-DI 它使用自动装配(反射)并且有一个缓存机制(它使用 Doctrine 的缓存库)。
    猜你喜欢
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 2019-07-23
    • 2014-11-10
    • 2022-12-18
    • 1970-01-01
    • 2019-05-10
    相关资源
    最近更新 更多