多个php类(Symfony控制器)可访问的函数

多个php类(Symfony控制器)可访问的函数,php,function,symfony,methods,controller,Php,Function,Symfony,Methods,Controller,在我的Symfony项目中,我有几个用于多个控制器的函数。我希望有一个单独的php文件(比如functions.php)来存储函数,而不是不断地复制和粘贴它们 我尝试了以下方法: 1) 包含并要求php文件和函数,但它不允许我使用$this->getDoctrine()。 我查看了以下帖子寻求帮助,但没有解决问题: 2) 我已经尝试将其设置为类,并将函数设置为方法,然后执行以下操作: $f = new Functions(); $variable = $f->myMethod();

在我的Symfony项目中,我有几个用于多个控制器的函数。我希望有一个单独的php文件(比如functions.php)来存储函数,而不是不断地复制和粘贴它们

我尝试了以下方法:

1) 包含并要求php文件和函数,但它不允许我使用$this->getDoctrine()。 我查看了以下帖子寻求帮助,但没有解决问题:

2) 我已经尝试将其设置为类,并将函数设置为方法,然后执行以下操作:

$f = new Functions();
$variable = $f->myMethod();
但它的回报是:

The file was found but the class was not in it, the class name or namespace probably has a typo.
谢谢你的帮助。我真的很感激

更新: 泛型类是
Symfony/src/wikilosts/MainBundle/Controller/DBFunctions.php
我现在只需要能够使用
$this->getDoctrine()
或者类似的东西。我试过使用上面链接中建议的
services.yml
,但没有雪茄。谢谢

找到文件,但类不在其中,类名或 命名空间可能有输入错误

这个问题实际上经常发生。如错误所述,有两种情况解释了返回此错误的原因:

  • 如果文件的命名空间与文件的路径不同
  • 如果文件名与类中使用的名称不同

例子 假设您希望在另一个类中使用GeneralClass,如下所示:

use  Acme\YourBundle\General\GenericClass
要使其正常工作,
GeneralClass
需要位于
Acme/YourBundle/General/
中,并且您需要:

  • 使用正确的命名空间:
    namespace Acme\YourBundle\General
  • 使用相同的名称命名您的类:
    class GenericClass
你应该:

namespace Acme\YourBundle\General;

class GenericClass
{
    public function __construct()
    {
        // some cool stuff
    }
}

谢谢现在我只需要处理错误:在不在对象上下文中时使用$this。除了我上面发布的链接之外,还有什么建议吗?如果你用一般文件的名称及其路径更新你的问题,我可以根据你的具体情况更新我的答案。这是一个经常发生的普遍问题:)