2017-12-21 26 views
0

php7以降、関数の戻り値の型を宣言できることはすでにわかっています。その関数が何か他のものを返すと、例外がスローされます。Symfony - Doctrineエンティティの戻り型

今、私のsymfonyプロジェクトの関数がDoctrineエンティティを返すときに、この新しい機能を使いたいと思います。あなたはそれがnullまたはobject変数を返す必要があります見ることができるように

public function getEntity(array $conditions, string $entityClass): ?object 
{ 
    // some logic... 
    return $queryBuilder->setMaxResults(1)->getQuery()->getOneOrNullResult(); 
} 

:だから私はこのような関数を宣言しようとしました。しかし、私が例外を得たので期待通りobjectが動作しないようです:

Type error: Return value of HelperBundle\MyHelper::getEntity() must be an instance of HelperBundle\object or null, instance of AppBundle\Entity\MyEntity returned

私は実際にこのメッセージは何を意味するのかについてはよく分からない:返されたオブジェクトは、HelperBundleまたは何に位置クラスから派生する必要がありますか?

しかし、一般的に言えば、カスタムベースクラスやインターフェイスを使用せずにジェネリックDoctrineエンティティの戻り値の型を宣言する方法はありますか?

+0

正確に何のためにDownvote? – DrKey

答えて

3

私はちょうど今、この記事を読んで、PHP 7.2でしかしあなたができるオブジェクト

として戻り値の型-ヒンティングを持ってサポートされていない: http://php.net/manual/en/migration72.new-features.php

+0

"またはnull"の部分では間違いがあります。 Nullable型は、PHP 7.1で導入されています。http://php.net/manual/ru/migration71.new-features.phpを参照してください。 – svgrafov

+0

@svgrafov、ありがとう、私はそれを変更しました。 –

1

あなたの最初の質問に対処するために、私はちょうどあなたがHelperBundle名前空間でobjectクラスを宣言したかのように、この宣言

public function getEntity(array $conditions, string $entityClass): ?object 

はPHP < 7.2に理解されていることを言うだろう。

+0

私はPhpStormに頼りにしていたので、エラーがないので、PHP 7.1からすでに利用可能だと思っていました... my fault:\ – DrKey

関連する問題