【问题标题】:Symfony: Service Container VS Static MethodSymfony:服务容器 VS 静态方法
【发布时间】:2017-04-01 01:49:42
【问题描述】:

我们以此为例,我在 Validator 类中有一个方法调用 validateDateTime。这个功能很简单,就是检查日期时间是否符合要求的格式。

namespace MyApp\Util;

use \DateTime;

class Validator {
    public static function validateDateTime($dateTime, $format = 'Y-m-d') {
        $d = DateTime::createFromFormat($format, $dateTime);
        return $d && $d->format($format) == $dateTime;
    } 
}

在我学习 Symfony 之前,如果函数必须在应用程序之间共享,我总是使用静态方法以方便函数的使用。

在我学习了 Symfony 之后,我知道 Symfony 有一个非常强大的全功能,它是服务容器,可以方便地访问将在整个应用程序中使用的功能。

我的问题是:

  1. 使用静态方法与服务容器有什么优缺点
  2. 在 Symfony 最佳实践中,如果我想达到相同的目的(跨整个应用程序共享的功能),是否建议使用服务容器而不是静态方法。
  3. 什么情况、什么时候、为什么需要使用静态方法

非常感谢您的评论和意见。

【问题讨论】:

  • 从测试的角度来看静态方法很难模拟

标签: php symfony service static-methods


【解决方案1】:

如果您将来可能需要您正在编写的功能的另一个实现,请不要使用静态方法。静态方法是“静态的”,不能更改或扩展。

服务“IoC”容器用于通过解耦组件和反转它们之间的可靠性来使您的代码更容易更改或扩展,您可以添加新的实现或更改现有的实现,而无需对任何依赖组件进行任何更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多