php - Symfony:服务容器 VS 静态方法

标签 php symfony service static-methods

让我们以此为例,我在 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. 在什么情况下,什么时候,为什么需要使用静态方法

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

最佳答案

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

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

关于php - Symfony:服务容器 VS 静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43151921/

相关文章:

javascript - Vuejs将多选改为简单选择

php - 将整个日志文件保存在一个变量中?

php - Javascript:如何替换[]和“?

ssl - CAS 服务票据验证失败

java - 在android中启动一个服务来记录当前屏幕

android - GcmListenerService.onMessageReceived 未调用

php - CakePHP:无法以纯文本形式发送电子邮件

symfony - bundle 不存在: Symfony2

交响乐2 : how to override repository of another bundle

forms - LiipImagineBundle 错误