1

Zend Framework 1 と Bisna ライブラリを使用して Doctrine 2 を統合しています。Doctrine 2 CLI を使用して、データベース モデルからエンティティを生成しました。関連するレコードの設定メソッドを除いて、これはすべて正常に機能しています。彼らが受け入れる引数は、特定の名前空間 (\Categoryここ) のものでなければなりません。

class Article
{
    public function setCategory(\Category $category = null) {
        $this->category = $category;
        return $this;
    }
}

ただし、これを行うと:

$article    = $this->em->getRepository('\Application\Entity\Article')->find(1);

$category   = new \Application\Entity\Category();
$category->SetName('New Category');

$article->setCategory($category);

次の致命的なエラーが発生します: Argument 1 passed to Application\Entity\CategoryField::setCategory() must be an instance of Category, instance of Application\Entity\Category given.

\Application\Entity\Categoryオブジェクトを受け入れるようにセッターメソッドを変更すると、もちろん機能します。生成されたすべてのメソッドに対してこれを行う必要がありますか、それとも他のオプションがありますか? 名前空間を使うのはこれが初めてなので、簡単なものかもしれません。

4

1 に答える 1

0

これはいつでもクラスファイルの先頭に追加できます:use \Application\Entity\Category;そして、後で次のように参照するだけです:public function setCategory(Category $category = null)

詳細については、http : //php.net/manual/en/language.namespaces.importing.phpをご覧ください。use

それ以外の場合は、完全な名前空間を参照する必要があります。そうしないと、アプリケーションはそれがへ\Categoryの参照であることを知りません\Application\Entity\Category

于 2013-05-17T17:00:14.140 に答える