Use PHPStan generics

[MAILPOET-2900]
This commit is contained in:
Jan Jakeš
2020-05-12 15:38:18 +02:00
committed by Veljko V
parent e1819d4334
commit 86a24ad674
19 changed files with 34 additions and 84 deletions

View File

@@ -6,11 +6,7 @@ use MailPoet\Doctrine\Repository;
use MailPoet\Entities\NewsletterLinkEntity;
/**
* @method NewsletterLinkEntity[] findBy(array $criteria, array $orderBy = null, int $limit = null, int $offset = null)
* @method NewsletterLinkEntity|null findOneBy(array $criteria, array $orderBy = null)
* @method NewsletterLinkEntity|null findOneById(mixed $id)
* @method void persist(NewsletterLinkEntity $entity)
* @method void remove(NewsletterLinkEntity $entity)
* @extends Repository<NewsletterLinkEntity>
*/
class NewsletterLinkRepository extends Repository {
protected function getEntityClassName() {

View File

@@ -7,6 +7,9 @@ use MailPoet\Entities\ScheduledTaskEntity;
use MailPoet\Entities\StatsNotificationEntity;
use MailPoetVendor\Carbon\Carbon;
/**
* @extends Repository<StatsNotificationEntity>
*/
class StatsNotificationsRepository extends Repository {
protected function getEntityClassName() {
return StatsNotificationEntity::class;

View File

@@ -6,12 +6,7 @@ use MailPoet\Doctrine\Repository;
use MailPoet\Entities\CustomFieldEntity;
/**
* @method CustomFieldEntity[] findBy(array $criteria, array $orderBy = null, int $limit = null, int $offset = null)
* @method CustomFieldEntity[] findAll()
* @method CustomFieldEntity|null findOneBy(array $criteria, array $orderBy = null)
* @method CustomFieldEntity|null findOneById(mixed $id)
* @method void persist(CustomFieldEntity $entity)
* @method void remove(CustomFieldEntity $entity)
* @extends Repository<CustomFieldEntity>
*/
class CustomFieldsRepository extends Repository {
protected function getEntityClassName() {

View File

@@ -7,6 +7,9 @@ use MailPoetVendor\Doctrine\ORM\EntityManager;
use MailPoetVendor\Doctrine\ORM\EntityRepository as DoctrineEntityRepository;
use MailPoetVendor\Doctrine\ORM\Mapping\ClassMetadata;
/**
* @template T of object
*/
abstract class Repository {
/** @var EntityManager */
protected $entityManager;
@@ -28,7 +31,7 @@ abstract class Repository {
* @param array|null $orderBy
* @param int|null $limit
* @param int|null $offset
* @return array
* @return T[]
*/
public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) {
return $this->doctrineRepository->findBy($criteria, $orderBy, $limit, $offset);
@@ -37,7 +40,7 @@ abstract class Repository {
/**
* @param array $criteria
* @param array|null $orderBy
* @return object|null
* @return T|null
*/
public function findOneBy(array $criteria, array $orderBy = null) {
return $this->doctrineRepository->findOneBy($criteria, $orderBy);
@@ -45,21 +48,21 @@ abstract class Repository {
/**
* @param mixed $id
* @return object|null
* @return T|null
*/
public function findOneById($id) {
return $this->doctrineRepository->find($id);
}
/**
* @return array
* @return T[]
*/
public function findAll() {
return $this->doctrineRepository->findAll();
}
/**
* @param object $entity
* @param T $entity
*/
public function persist($entity) {
$this->entityManager->persist($entity);
@@ -78,7 +81,7 @@ abstract class Repository {
}
/**
* @param object $entity
* @param T $entity
*/
public function remove($entity) {
$this->entityManager->remove($entity);
@@ -89,7 +92,7 @@ abstract class Repository {
}
/**
* @return string
* @return class-string<T>
*/
abstract protected function getEntityClassName();
}

View File

@@ -6,10 +6,7 @@ use MailPoet\Doctrine\Repository;
use MailPoet\Entities\FeatureFlagEntity;
/**
* @method FeatureFlagEntity[] findAll()
* @method FeatureFlagEntity|null findOneBy(array $criteria, array $orderBy = null)
* @method void persist(FeatureFlagEntity $entity)
* @method void remove(FeatureFlagEntity $entity)
* @extends Repository<FeatureFlagEntity>
*/
class FeatureFlagsRepository extends Repository {
protected function getEntityClassName() {

View File

@@ -6,12 +6,7 @@ use MailPoet\Doctrine\Repository;
use MailPoet\Entities\FormEntity;
/**
* @method FormEntity[] findBy(array $criteria, array $orderBy = null, int $limit = null, int $offset = null)
* @method FormEntity[] findAll()
* @method FormEntity|null findOneBy(array $criteria, array $orderBy = null)
* @method FormEntity|null findOneById(mixed $id)
* @method void persist(FormEntity $entity)
* @method void remove(FormEntity $entity)
* @extends Repository<FormEntity>
*/
class FormsRepository extends Repository {
protected function getEntityClassName() {

View File

@@ -6,11 +6,7 @@ use MailPoet\Doctrine\Repository;
use MailPoet\Entities\NewsletterEntity;
/**
* @method NewsletterEntity[] findBy(array $criteria, array $orderBy = null, int $limit = null, int $offset = null)
* @method NewsletterEntity|null findOneBy(array $criteria, array $orderBy = null)
* @method NewsletterEntity|null findOneById(mixed $id)
* @method void persist(NewsletterEntity $entity)
* @method void remove(NewsletterEntity $entity)
* @extends Repository<NewsletterEntity>
*/
class NewslettersRepository extends Repository {
protected function getEntityClassName() {

View File

@@ -6,11 +6,7 @@ use MailPoet\Doctrine\Repository;
use MailPoet\Entities\NewsletterOptionFieldEntity;
/**
* @method NewsletterOptionFieldEntity[] findBy(array $criteria, array $orderBy = null, int $limit = null, int $offset = null)
* @method NewsletterOptionFieldEntity|null findOneBy(array $criteria, array $orderBy = null)
* @method NewsletterOptionFieldEntity|null findOneById(mixed $id)
* @method void persist(NewsletterOptionFieldEntity $entity)
* @method void remove(NewsletterOptionFieldEntity $entity)
* @extends Repository<NewsletterOptionFieldEntity>
*/
class NewsletterOptionFieldsRepository extends Repository {
protected function getEntityClassName() {

View File

@@ -6,11 +6,7 @@ use MailPoet\Doctrine\Repository;
use MailPoet\Entities\NewsletterOptionEntity;
/**
* @method NewsletterOptionEntity[] findBy(array $criteria, array $orderBy = null, int $limit = null, int $offset = null)
* @method NewsletterOptionEntity|null findOneBy(array $criteria, array $orderBy = null)
* @method NewsletterOptionEntity|null findOneById(mixed $id)
* @method void persist(NewsletterOptionEntity $entity)
* @method void remove(NewsletterOptionEntity $entity)
* @extends Repository<NewsletterOptionEntity>
*/
class NewsletterOptionsRepository extends Repository {
protected function getEntityClassName() {

View File

@@ -6,11 +6,7 @@ use MailPoet\Doctrine\Repository;
use MailPoet\Entities\SendingQueueEntity;
/**
* @method SendingQueueEntity[] findBy(array $criteria, array $orderBy = null, int $limit = null, int $offset = null)
* @method SendingQueueEntity|null findOneBy(array $criteria, array $orderBy = null)
* @method SendingQueueEntity|null findOneById(mixed $id)
* @method void persist(SendingQueueEntity $entity)
* @method void remove(SendingQueueEntity $entity)
* @extends Repository<SendingQueueEntity>
*/
class SendingQueuesRepository extends Repository {
protected function getEntityClassName() {

View File

@@ -13,6 +13,9 @@ use MailPoet\WooCommerce\Helper as WCHelper;
use MailPoetVendor\Doctrine\ORM\EntityManager;
use MailPoetVendor\Doctrine\ORM\UnexpectedResultException;
/**
* @extends Repository<NewsletterEntity>
*/
class NewsletterStatisticsRepository extends Repository {
/** @var WCHelper */

View File

@@ -9,11 +9,7 @@ use MailPoet\Entities\NewsletterTemplateEntity;
use function MailPoetVendor\array_column;
/**
* @method NewsletterTemplateEntity[] findBy(array $criteria, array $orderBy = null, int $limit = null, int $offset = null)
* @method NewsletterTemplateEntity|null findOneBy(array $criteria, array $orderBy = null)
* @method NewsletterTemplateEntity|null findOneById(mixed $id)
* @method void persist(NewsletterTemplateEntity $entity)
* @method void remove(NewsletterTemplateEntity $entity)
* @extends Repository<NewsletterTemplateEntity>
*/
class NewsletterTemplatesRepository extends Repository {
const RECENTLY_SENT_CATEGORIES = '["recent"]';

View File

@@ -6,11 +6,7 @@ use MailPoet\Doctrine\Repository;
use MailPoet\Entities\SegmentEntity;
/**
* @method SegmentEntity[] findBy(array $criteria, array $orderBy = null, int $limit = null, int $offset = null)
* @method SegmentEntity|null findOneBy(array $criteria, array $orderBy = null)
* @method SegmentEntity|null findOneById(mixed $id)
* @method void persist(SegmentEntity $entity)
* @method void remove(SegmentEntity $entity)
* @extends Repository<SegmentEntity>
*/
class SegmentsRepository extends Repository {
protected function getEntityClassName() {

View File

@@ -8,12 +8,7 @@ use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Carbon\Carbon;
/**
* @method SettingEntity[] findBy(array $criteria, array $orderBy = null, int $limit = null, int $offset = null)
* @method SettingEntity|null findOneBy(array $criteria, array $orderBy = null)
* @method SettingEntity|null findOneById(mixed $id)
* @method SettingEntity[] findAll()
* @method void persist(SettingEntity $entity)
* @method void remove(SettingEntity $entity)
* @extends Repository<SettingEntity>
*/
class SettingsRepository extends Repository {
public function findOneByName($name) {

View File

@@ -6,11 +6,7 @@ use MailPoet\Doctrine\Repository;
use MailPoet\Entities\UserFlagEntity;
/**
* @method UserFlagEntity[] findBy(array $criteria, array $orderBy = null, int $limit = null, int $offset = null)
* @method UserFlagEntity|null findOneBy(array $criteria, array $orderBy = null)
* @method UserFlagEntity|null findOneById(mixed $id)
* @method void persist(UserFlagEntity $entity)
* @method void remove(UserFlagEntity $entity)
* @extends Repository<UserFlagEntity>
*/
class UserFlagsRepository extends Repository {
protected function getEntityClassName() {

View File

@@ -6,11 +6,7 @@ use MailPoet\Doctrine\Repository;
use MailPoet\Entities\StatisticsUnsubscribeEntity;
/**
* @method StatisticsUnsubscribeEntity[] findBy(array $criteria, array $orderBy = null, int $limit = null, int $offset = null)
* @method StatisticsUnsubscribeEntity|null findOneBy(array $criteria, array $orderBy = null)
* @method StatisticsUnsubscribeEntity|null findOneById(mixed $id)
* @method void persist(StatisticsUnsubscribeEntity $entity)
* @method void remove(StatisticsUnsubscribeEntity $entity)
* @extends Repository<StatisticsUnsubscribeEntity>
*/
class StatisticsUnsubscribesRepository extends Repository {
protected function getEntityClassName() {

View File

@@ -6,11 +6,7 @@ use MailPoet\Doctrine\Repository;
use MailPoet\Entities\StatisticsWooCommercePurchaseEntity;
/**
* @method StatisticsWooCommercePurchaseEntity[] findBy(array $criteria, array $orderBy = null, int $limit = null, int $offset = null)
* @method StatisticsWooCommercePurchaseEntity|null findOneBy(array $criteria, array $orderBy = null)
* @method StatisticsWooCommercePurchaseEntity|null findOneById(mixed $id)
* @method void persist(StatisticsWooCommercePurchaseEntity $entity)
* @method void remove(StatisticsWooCommercePurchaseEntity $entity)
* @extends Repository<StatisticsWooCommercePurchaseEntity>
*/
class StatisticsWooCommercePurchasesRepository extends Repository {
protected function getEntityClassName() {

View File

@@ -6,11 +6,7 @@ use MailPoet\Doctrine\Repository;
use MailPoet\Entities\SubscriberEntity;
/**
* @method SubscriberEntity[] findBy(array $criteria, array $orderBy = null, int $limit = null, int $offset = null)
* @method SubscriberEntity|null findOneBy(array $criteria, array $orderBy = null)
* @method SubscriberEntity|null findOneById(mixed $id)
* @method void persist(SubscriberEntity $entity)
* @method void remove(SubscriberEntity $entity)
* @extends Repository<SubscriberEntity>
*/
class SubscribersRepository extends Repository {
protected function getEntityClassName() {

View File

@@ -15,6 +15,9 @@ parameters:
- '#Parameter \#1 \$function of function call_user_func_array expects callable(): mixed, .wc_.*. given.#'
- '#Parameter \#1 \$reader of class MailPoetVendor\\Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver constructor expects MailPoetVendor\\Doctrine\\Common\\Annotations\\AnnotationReader, MailPoetVendor\\Doctrine\\Common\\Annotations\\CachedReader given#'
- '/(with|has) no (return )?typehint specified/' # exclude level 6 errors
# Doctrine repository annotates return values as object|null, we override them to specific generics (T|null)
- '#Method MailPoet\\Doctrine\\Repository::findOneBy(Id)?\(\) should return T of object\|null but returns object\|null\.#'
reportUnmatchedIgnoredErrors: false
dynamicConstantNames:
- WP_DEBUG