gpt4 book ai didi

zend-framework2 - Zend Framework 2 中的工厂类与闭包

转载 作者:行者123 更新时间:2023-12-04 06:39:15 24 4
gpt4 key购买 nike

在 Zend Framework 2 中使用工厂类或闭包更好吗?为什么?

我知道闭包不能序列化,但是如果你从 Module#getServiceConfig() 返回它们,这不会影响其余配置数据的缓存,并且闭包无论如何都会缓存在你的操作码缓存中。

构造工厂类与执行闭包的性能有何不同? PHP 是否仅在您执行闭包时包装和实例化闭包,还是会为每个请求的配置文件中定义的每个闭包执行此操作?

有没有人比较过每种方法的执行时间?

也可以看看:

  • Dependency management in Zend Framework 2 MVC applications
  • Passing forms vs raw input to service layer
  • 最佳答案

    PHP 将在编译时将配置中的匿名函数转换为闭包类的实例,因此它会在每个请求上执行此操作。这与 create_function 不同。这将在运行时创建函数。但是,由于闭包在编译时执行此操作,因此它应该在您的 opcache 缓存中,因此无关紧要。

    就使用工厂与闭包构建服务的性能影响而言,首先您必须记住,无论您请求服务多少次,每次请求都只会构建一次服务。我运行了一个使用闭包和工厂获取服务的快速基准测试,这就是我得到的(我运行了几次,所有结果的值都差不多):

    Closure: 0.026999999999999ns
    Factory: 0.30200000000002ns

    这些是纳秒,即 10-9 秒。基本上性能差异是如此之小以至于没有有效的差异。

    ZF2 也不能用闭包缓存我的整个模块的配置。如果我使用纯工厂,那么我的整个配置可以被合并、缓存,并且可以在每个请求上读取一个简单的文件,而不必担心每次都加载和合并配置文件。我没有衡量这对性能的影响,但我猜无论如何它都是微不足道的。

    但是,我更喜欢工厂主要是因为可读性和可维护性。对于工厂,您最终不会得到一些庞大的配置文件,其中到处都是大量的闭包。

    当然,闭包非常适合快速开发,但如果您希望代码可读且可维护,那么我会说坚持使用工厂。

    关于zend-framework2 - Zend Framework 2 中的工厂类与闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19479175/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com