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

时间:2013-03-24 02:50:12

标签: php function symfony methods controller

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

我尝试了以下内容:

1)包含并要求带有这些功能的php文件,但它不会让我使用$ this-> getDoctrine()。 我已经查看了以下帖子以寻求帮助,但它没有解决问题:

Symfony2: get Doctrine in a generic PHP class

Symfony2 Use Doctrine in Service Container

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.

感谢您的帮助。对此,我真的非常感激。

UPDATE:

通用类是Symfony/src/WikiRoster/MainBundle/Controller/DBFunctions.php 我现在只需要能够以某种方式使用$this->getDoctrine()之类的东西。我已尝试使用上面链接中建议的services.yml,但没有雪茄。谢谢!

1 个答案:

答案 0 :(得分:0)

  

找到了文件但该类不在其中,类名或   命名空间可能有拼写错误。

这个问题实际上经常发生。正如错误所提到的,有2个案例解释了为什么会返回此错误:

  • 如果文件的命名空间与文件的路径不同
  • 如果您的文件名与您在班级中使用的名称不同

实施例

假设你想在不同的类中使用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
    }
}