3

Symfony プロジェクトの複数のコントローラーで使用される関数がいくつかあります。それらを常にコピーして貼り付けるのではなく、関数を保存する別の php ファイル (functions.php など) が必要です。

私は次のことを試しました:

1) 関数を含む php ファイルをインクルードして要求しますが、$this->getDoctrine() を使用できません。ヘルプについて次の投稿を見ましたが、問題は解決しませんでした。

Symfony2: ジェネリック PHP クラスで Doctrine を取得する

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.

助けてくれてありがとう。ほんとうにありがとう。

アップデート:

ジェネリッククラスは、今そこに何らかの形でSymfony/src/WikiRoster/MainBundle/Controller/DBFunctions.php 使用できるようにする必要があるだけです。$this->getDoctrine()上記のリンクで提案されているように使用してみましservices.ymlたが、葉巻はありません. ありがとう!

4

1 に答える 1

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
    }
}
于 2013-03-24T03:04:19.847 に答える