Symfony2可重用的代码段功能

时间:2014-06-02 13:18:35

标签: php function symfony service helpers

我最近在使用Symfony2,我一直想知道什么时候应该创建一个服务,何时创建一个类。

例如,我确实有一个小片段功能,这是一个非常可重复使用的代码片段。因此,我不想在我的控制器中使用那段代码。这意味着我想在我的捆绑中的任何地方使用它。

它非常简单,但它基本上会根据slug / path为我生成一个完整的url。现在请注意,这可能是其他任何内容,例如customStringGenerator()或者其他任何内容。

摘录:

public function generateUrlFromPath(Request $request, $path)
{
    return $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath() . $path;
}

现在我可以制作某种Toolkit或UrlHelper类并将其定义为服务,这样我就可以轻松地注入Request对象,但是对于我来说,为这样一个简单的方法创建服务似乎过头了。

在这种情况下,有人会建议什么?当你创建可重用的函数时,你会做什么?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您可以使用可重复使用的代码创建Utility类甚至Utility Bundle。 请参阅以下链接以及说明:
- Symfony 2 - Where should I put a utility class?
- Where do I put classes in Symfony that are neither Controllers nor models?

根据您的情况,您可以添加'帮助'子文件夹(另一个命名空间)到您的包并从那里使用它的方法。当然,如果您只打算从Bundle中重用该代码。

答案 1 :(得分:2)

对于可重用性,我使用:

  • 服务(当我需要通过构造函数注入其他依赖项时),因此您不必每次都手动执行此操作。

  • 辅助控制器,我的控制器扩展。

  • 具有公共静态函数的类。

  • Traits(PHP> = 5.4),当您需要在几个类中共享相同的方法时,以帮助克服单类继承限制。

对于你的功能,我个人会在Helper控制器中创建一个受保护的功能,但是服务也可以,即使它只是一小段代码。您最终可能会在以后向该服务编写更多代码。