forked from Innmind/Reflection
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ExtractionStrategies.php
38 lines (32 loc) · 977 Bytes
/
ExtractionStrategies.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
declare(strict_types = 1);
namespace Innmind\Reflection;
use Innmind\Reflection\ExtractionStrategy\GetterStrategy;
use Innmind\Reflection\ExtractionStrategy\NamedMethodStrategy;
use Innmind\Reflection\ExtractionStrategy\ReflectionStrategy;
use Innmind\Immutable\TypedCollection;
use Innmind\Immutable\TypedCollectionInterface;
final class ExtractionStrategies
{
private static $defaults;
/**
* Return a collection of the default strategies available
*
* @return TypedCollectionInterface
*/
public static function defaults(): TypedCollectionInterface
{
if (self::$defaults !== null) {
return self::$defaults;
}
self::$defaults = new TypedCollection(
ExtractionStrategyInterface::class,
[
new GetterStrategy,
new NamedMethodStrategy,
new ReflectionStrategy,
]
);
return self::$defaults;
}
}