Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony2可重复使用的代码段函数_Php_Function_Symfony_Service_Helpers - Fatal编程技术网

Php Symfony2可重复使用的代码段函数

Php Symfony2可重复使用的代码段函数,php,function,symfony,service,helpers,Php,Function,Symfony,Service,Helpers,我最近在使用Symfony2,我一直在想什么时候应该创建服务,什么时候应该创建类 例如,我有一个非常可重用的代码片段函数。因此,我不希望控制器中有这段代码。这意味着我想在包中的任何地方使用它 这很简单,但它基本上会根据slug/path为我生成一个完整的url。现在请注意,这可能是其他任何东西,例如customStringGenerator()或其他任何东西 片段: public function generateUrlFromPath(Request $request, $path) {

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

例如,我有一个非常可重用的代码片段函数。因此,我不希望控制器中有这段代码。这意味着我想在包中的任何地方使用它

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

片段:

public function generateUrlFromPath(Request $request, $path)
{
    return $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath() . $path;
}
现在,我可以创建某种Toolkit或UrlHelper类,并将其定义为服务,这样我就可以轻松地注入请求对象,但为这样一个简单的方法创建服务似乎有些过头了

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


感谢您迄今为止的帮助。

您可以使用可重用代码创建一个实用程序类,甚至是一个实用程序包。 请参阅以下带有说明的链接:
-
-


根据您的情况,您可以将“Helper”子文件夹(另一个命名空间)添加到包中,并从中使用其方法。当然,如果您只计划从该捆绑包中重用该代码,那么就需要这样做

您可以使用可重用代码创建实用程序类,甚至是实用程序包。 请参阅以下带有说明的链接:
-
-


根据您的情况,您可以将“Helper”子文件夹(另一个命名空间)添加到包中,并从中使用其方法。当然,如果您只计划从该捆绑包中重用该代码,那么就需要这样做

对于可重用性,我使用:

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

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

  • 具有公共静态函数的类

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


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

为了可重用性,我使用:

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

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

  • 具有公共静态函数的类

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


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

对于我来说,在这种情况下,扩展
请求
symfony服务是一个更好的选择,因为它只依赖
请求
对象:对于我来说,在这种情况下,扩展
Request
symfony服务是一个更好的选择,因为它只依赖
Request
对象: