1 | <?php |
||
23 | class CommonClassesStrategy implements DiscoveryStrategy |
||
24 | { |
||
25 | /** |
||
26 | * @var array |
||
27 | */ |
||
28 | private static $classes = [ |
||
29 | 'Http\Message\MessageFactory' => [ |
||
30 | ['class' => GuzzleMessageFactory::class, 'condition' => [GuzzleRequest::class, GuzzleMessageFactory::class]], |
||
31 | ['class' => DiactorosMessageFactory::class, 'condition' => [DiactorosRequest::class, DiactorosMessageFactory::class]], |
||
32 | ], |
||
33 | 'Http\Message\StreamFactory' => [ |
||
34 | ['class' => GuzzleStreamFactory::class, 'condition' => [GuzzleRequest::class, GuzzleStreamFactory::class]], |
||
35 | ['class' => DiactorosStreamFactory::class, 'condition' => [DiactorosRequest::class, DiactorosStreamFactory::class]], |
||
36 | ], |
||
37 | 'Http\Message\UriFactory' => [ |
||
38 | ['class' => GuzzleUriFactory::class, 'condition' => [GuzzleRequest::class, GuzzleUriFactory::class]], |
||
39 | ['class' => DiactorosUriFactory::class, 'condition' => [DiactorosRequest::class, DiactorosUriFactory::class]], |
||
40 | ], |
||
41 | 'Http\Client\HttpAsyncClient' => [ |
||
42 | ['class' => Guzzle6::class, 'condition' => Guzzle6::class], |
||
43 | ['class' => Curl::class, 'condition' => Curl::class], |
||
44 | ['class' => React::class, 'condition' => React::class], |
||
45 | ], |
||
46 | 'Http\Client\HttpClient' => [ |
||
47 | ['class' => Guzzle6::class, 'condition' => Guzzle6::class], |
||
48 | ['class' => Guzzle5::class, 'condition' => Guzzle5::class], |
||
49 | ['class' => Curl::class, 'condition' => Curl::class], |
||
50 | ['class' => Socket::class, 'condition' => Socket::class], |
||
51 | ['class' => Buzz::class, 'condition' => Buzz::class], |
||
52 | ['class' => React::class, 'condition' => React::class], |
||
53 | ], |
||
54 | ]; |
||
55 | |||
56 | /** |
||
57 | * {@inheritdoc} |
||
58 | */ |
||
59 | public static function getCandidates($type) |
||
67 | } |
||
68 |
Let’s assume you have a class which uses late-static binding:
The code above will run fine in your PHP runtime. However, if you now create a sub-class and call the
getSomeVariable()
on that sub-class, you will receive a runtime error:In the case above, it makes sense to update
SomeClass
to useself
instead: