Skip to content

Commit 146d3f4

Browse files
mbabkerphansys
authored andcommitted
Add generics for the event subscriber configuration arrays and adapters
1 parent 755c0a7 commit 146d3f4

19 files changed

+66
-59
lines changed

phpstan-baseline.neon

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -280,21 +280,6 @@ parameters:
280280
count: 1
281281
path: src/References/ReferencesListener.php
282282

283-
-
284-
message: "#^Call to an undefined method Gedmo\\\\Mapping\\\\Event\\\\AdapterInterface\\:\\:extractIdentifier\\(\\)\\.$#"
285-
count: 2
286-
path: src/References/ReferencesListener.php
287-
288-
-
289-
message: "#^Call to an undefined method Gedmo\\\\Mapping\\\\Event\\\\AdapterInterface\\:\\:getIdentifier\\(\\)\\.$#"
290-
count: 1
291-
path: src/References/ReferencesListener.php
292-
293-
-
294-
message: "#^Call to an undefined method Gedmo\\\\Mapping\\\\Event\\\\AdapterInterface\\:\\:getSingleReference\\(\\)\\.$#"
295-
count: 1
296-
path: src/References/ReferencesListener.php
297-
298283
-
299284
message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\Mapping\\\\ClassMetadata\\<object\\>\\:\\:getReflectionProperty\\(\\)\\.$#"
300285
count: 2
@@ -395,11 +380,6 @@ parameters:
395380
count: 1
396381
path: src/SoftDeleteable/Query/TreeWalker/SoftDeleteableWalker.php
397382

398-
-
399-
message: "#^Call to an undefined method Gedmo\\\\Mapping\\\\Event\\\\AdapterInterface\\:\\:getDateValue\\(\\)\\.$#"
400-
count: 1
401-
path: src/SoftDeleteable/SoftDeleteableListener.php
402-
403383
-
404384
message: "#^Access to offset 'inherited' on an unknown class Doctrine\\\\ODM\\\\MongoDB\\\\Mapping\\\\AssociationFieldMapping\\.$#"
405385
count: 1

src/AbstractTrackingListener.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@
2828
/**
2929
* The AbstractTrackingListener provides generic functions for all listeners.
3030
*
31+
* @phpstan-template TConfig of array
32+
* @phpstan-template TEventAdapter of AdapterInterface
33+
*
34+
* @phpstan-extends MappedEventSubscriber<TConfig, TEventAdapter>
35+
*
3136
* @author Gediminas Morkevicius <[email protected]>
3237
*/
3338
abstract class AbstractTrackingListener extends MappedEventSubscriber

src/Blameable/BlameableListener.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,15 @@
1111

1212
use Doctrine\Persistence\Mapping\ClassMetadata;
1313
use Gedmo\AbstractTrackingListener;
14+
use Gedmo\Blameable\Mapping\Event\BlameableAdapter;
1415
use Gedmo\Exception\InvalidArgumentException;
1516

1617
/**
1718
* The Blameable listener handles the update of
1819
* dates on creation and update.
1920
*
21+
* @phpstan-extends AbstractTrackingListener<array, BlameableAdapter>
22+
*
2023
* @author Gediminas Morkevicius <[email protected]>
2124
*
2225
* @final since gedmo/doctrine-extensions 3.11

src/IpTraceable/IpTraceableListener.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,15 @@
1212
use Doctrine\Persistence\Mapping\ClassMetadata;
1313
use Gedmo\AbstractTrackingListener;
1414
use Gedmo\Exception\InvalidArgumentException;
15+
use Gedmo\IpTraceable\Mapping\Event\IpTraceableAdapter;
1516
use Gedmo\Mapping\Event\AdapterInterface;
1617

1718
/**
1819
* The IpTraceable listener handles the update of
1920
* IPs on creation and update.
2021
*
22+
* @phpstan-extends AbstractTrackingListener<array, IpTraceableAdapter>
23+
*
2124
* @author Pierre-Charles Bertineau <[email protected]>
2225
*
2326
* @final since gedmo/doctrine-extensions 3.11

src/Loggable/LoggableListener.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
use Doctrine\Persistence\Mapping\ClassMetadata;
1818
use Doctrine\Persistence\ObjectManager;
1919
use Gedmo\Exception\InvalidArgumentException;
20-
use Gedmo\Loggable\Entity\LogEntry;
2120
use Gedmo\Loggable\Mapping\Event\LoggableAdapter;
2221
use Gedmo\Mapping\MappedEventSubscriber;
2322
use Gedmo\Tool\Wrapper\AbstractWrapper;
@@ -35,11 +34,9 @@
3534
* versioned?: string[],
3635
* }
3736
*
38-
* @phpstan-method LoggableConfiguration getConfiguration(ObjectManager $objectManager, $class)
39-
*
40-
* @method LoggableAdapter getEventAdapter(EventArgs $args)
41-
*
4237
* @phpstan-template T of Loggable|object
38+
*
39+
* @phpstan-extends MappedEventSubscriber<LoggableConfiguration, LoggableAdapter>
4340
*/
4441
class LoggableListener extends MappedEventSubscriber
4542
{

src/Mapping/MappedEventSubscriber.php

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,6 @@
2727
use Gedmo\Mapping\Driver\AttributeReader;
2828
use Gedmo\Mapping\Event\AdapterInterface;
2929
use Gedmo\Mapping\Event\ClockAwareAdapterInterface;
30-
use Gedmo\ReferenceIntegrity\Mapping\Validator as ReferenceIntegrityValidator;
31-
use Gedmo\Uploadable\FilenameGenerator\FilenameGeneratorInterface;
32-
use Gedmo\Uploadable\Mapping\Validator as MappingValidator;
3330
use Psr\Cache\CacheItemPoolInterface;
3431
use Psr\Clock\ClockInterface;
3532
use Symfony\Component\Cache\Adapter\ArrayAdapter;
@@ -43,6 +40,9 @@
4340
* all extensions who maps additional metadata through
4441
* extended drivers
4542
*
43+
* @phpstan-template TConfig of array
44+
* @phpstan-template TEventAdapter of AdapterInterface
45+
*
4646
* @author Gediminas Morkevicius <[email protected]>
4747
*/
4848
abstract class MappedEventSubscriber implements EventSubscriber
@@ -115,24 +115,7 @@ public function __construct()
115115
*
116116
* @return array<string, mixed>
117117
*
118-
* @phpstan-return array{
119-
* useObjectClass?: class-string,
120-
* referenceIntegrity?: array<string, array<string, value-of<ReferenceIntegrityValidator::INTEGRITY_ACTIONS>>>,
121-
* filePathField?: string,
122-
* uploadable?: bool,
123-
* fileNameField?: string,
124-
* allowOverwrite?: bool,
125-
* appendNumber?: bool,
126-
* maxSize?: float,
127-
* path?: string,
128-
* pathMethod?: string,
129-
* allowedTypes?: string[],
130-
* disallowedTypes?: string[],
131-
* filenameGenerator?: MappingValidator::FILENAME_GENERATOR_*|class-string<FilenameGeneratorInterface>,
132-
* fileMimeTypeField?: string,
133-
* fileSizeField?: string,
134-
* callback?: string,
135-
* }
118+
* @phpstan-return TConfig
136119
*/
137120
public function getConfiguration(ObjectManager $objectManager, $class)
138121
{
@@ -273,6 +256,8 @@ public function loadMetadataForObjectClass(ObjectManager $objectManager, $metada
273256
* @throws InvalidArgumentException if event is not recognized
274257
*
275258
* @return AdapterInterface
259+
*
260+
* @phpstan-return TEventAdapter
276261
*/
277262
protected function getEventAdapter(EventArgs $args)
278263
{

src/ReferenceIntegrity/ReferenceIntegrityListener.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,15 @@
1616
use Doctrine\Persistence\ObjectManager;
1717
use Gedmo\Exception\InvalidMappingException;
1818
use Gedmo\Exception\ReferenceIntegrityStrictException;
19+
use Gedmo\Mapping\Event\AdapterInterface;
1920
use Gedmo\Mapping\MappedEventSubscriber;
2021
use Gedmo\ReferenceIntegrity\Mapping\Validator;
2122

2223
/**
2324
* The ReferenceIntegrity listener handles the reference integrity on related documents
2425
*
26+
* @phpstan-extends MappedEventSubscriber<array, AdapterInterface>
27+
*
2528
* @author Evert Harmeling <[email protected]>
2629
*
2730
* @final since gedmo/doctrine-extensions 3.11

src/References/ReferencesListener.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use Doctrine\Persistence\Mapping\ClassMetadata;
1717
use Doctrine\Persistence\ObjectManager;
1818
use Gedmo\Mapping\MappedEventSubscriber;
19+
use Gedmo\References\Mapping\Event\ReferencesAdapter;
1920

2021
/**
2122
* Listener for loading and persisting cross database references.
@@ -39,7 +40,7 @@
3940
* useObjectClass?: class-string,
4041
* }
4142
*
42-
* @phpstan-method ReferencesConfiguration getConfiguration(ObjectManager $objectManager, $class)
43+
* @phpstan-extends MappedEventSubscriber<ReferencesConfiguration, ReferencesAdapter>
4344
*
4445
* @final since gedmo/doctrine-extensions 3.11
4546
*/

src/Sluggable/SluggableListener.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,7 @@
6565
* useObjectClass?: class-string,
6666
* }
6767
*
68-
* @phpstan-method SluggableConfiguration getConfiguration(ObjectManager $objectManager, $class)
69-
*
70-
* @method SluggableAdapter getEventAdapter(EventArgs $args)
68+
* @phpstan-extends MappedEventSubscriber<SluggableConfiguration, SluggableAdapter>
7169
*/
7270
class SluggableListener extends MappedEventSubscriber
7371
{

src/SoftDeleteable/SoftDeleteableListener.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,13 @@
2323
use Gedmo\Mapping\MappedEventSubscriber;
2424
use Gedmo\SoftDeleteable\Event\PostSoftDeleteEventArgs;
2525
use Gedmo\SoftDeleteable\Event\PreSoftDeleteEventArgs;
26+
use Gedmo\SoftDeleteable\Mapping\Event\SoftDeleteableAdapter;
2627

2728
/**
2829
* SoftDeleteable listener
2930
*
31+
* @phpstan-extends MappedEventSubscriber<array, SoftDeleteableAdapter>
32+
*
3033
* @author Gustavo Falco <[email protected]>
3134
* @author Gediminas Morkevicius <[email protected]>
3235
*

0 commit comments

Comments
 (0)