77
88use TYPO3 \CMS \Extbase \DomainObject \AbstractEntity ;
99use TYPO3 \CMS \Extbase \Mvc \Controller \ActionController ;
10+ use TYPO3 \CMS \Extbase \Persistence \Generic \QueryResult ;
11+ use TYPO3 \CMS \Extbase \Persistence \QueryResultInterface ;
1012use TYPO3 \CMS \Extbase \Persistence \Repository ;
1113use function PHPStan \Testing \assertType ;
1214
@@ -18,6 +20,24 @@ class FrontendUserGroupRepository extends Repository
1820
1921}
2022
23+ /**
24+ * @extends Repository<FrontendUserGroup>
25+ */
26+ class FrontendUserCustomFindAllGroupRepository extends Repository
27+ {
28+
29+ /**
30+ * @return QueryResultInterface<FrontendUserGroup>
31+ */
32+ public function findAll (): QueryResultInterface // phpcs:ignore SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingAnyTypeHint
33+ {
34+ $ queryResult = null ; // phpcs:ignore SlevomatCodingStandard.Variables.UselessVariable.UselessVariable
35+ /** @var QueryResult<FrontendUserGroup> $queryResult */
36+ return $ queryResult ;
37+ }
38+
39+ }
40+
2141class FrontendUserGroup extends AbstractEntity
2242{
2343
@@ -29,9 +49,16 @@ class MyController extends ActionController
2949 /** @var FrontendUserGroupRepository */
3050 private $ myRepository ;
3151
32- public function __construct (FrontendUserGroupRepository $ myRepository )
52+ /** @var FrontendUserCustomFindAllGroupRepository */
53+ private $ myCustomFindAllRepository ;
54+
55+ public function __construct (
56+ FrontendUserGroupRepository $ myRepository ,
57+ FrontendUserCustomFindAllGroupRepository $ myCustomFindAllRepository
58+ )
3359 {
3460 $ this ->myRepository = $ myRepository ;
61+ $ this ->myCustomFindAllRepository = $ myCustomFindAllRepository ;
3562 }
3663
3764 public function showAction (): void
@@ -47,6 +74,18 @@ public function showAction(): void
4774 'array<int, SaschaEgerer\PhpstanTypo3\Tests\Unit\Type\QueryResultToArrayDynamicReturnTypeExtension\FrontendUserGroup> ' ,
4875 $ myObjects
4976 );
77+
78+ assertType (
79+ 'array<int, SaschaEgerer\PhpstanTypo3\Tests\Unit\Type\QueryResultToArrayDynamicReturnTypeExtension\FrontendUserGroup> ' ,
80+ $ this ->myCustomFindAllRepository ->findAll ()->toArray ()
81+ );
82+
83+ $ queryResult = $ this ->myCustomFindAllRepository ->findAll ();
84+ $ myObjects = $ queryResult ->toArray ();
85+ assertType (
86+ 'array<int, SaschaEgerer\PhpstanTypo3\Tests\Unit\Type\QueryResultToArrayDynamicReturnTypeExtension\FrontendUserGroup> ' ,
87+ $ myObjects
88+ );
5089 }
5190
5291}
0 commit comments