3

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

我尝试了以下方法:

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

Symfony2:在通用 PHP 类中获取 Doctrine

Symfony2 在服务容器中使用 Doctrine

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/WikiRoster/MainBundle/Controller/DBFunctions.php 我现在只需要能够$this->getDoctrine()在其中以某种方式使用或类似的东西。我试过使用services.yml上面链接中建议的,但没有雪茄。谢谢!

4

1 回答 1

0

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

这个问题实际上经常发生。正如错误所述,有两种情况可以解释为什么返回此错误:

  • 如果您的文件的命名空间与您的文件的路径不同
  • 如果您的文件名与您在课堂上使用的名称不同

例子

假设您想在这样的不同类中使用 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
    }
}
于 2013-03-24T03:04:19.847 回答