Skip to content

Commit 886fc46

Browse files
committed
Using the OptionsResolver instead of reimplementing it poorly
1 parent d4280b7 commit 886fc46

File tree

9 files changed

+33
-49
lines changed

9 files changed

+33
-49
lines changed

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
"require": {
2424
"php": ">=5.3.3",
2525
"guzzle/http": "3.*",
26-
"symfony/event-dispatcher": "~2.3"
26+
"symfony/event-dispatcher": "~2.3",
27+
"symfony/options-resolver": "~2.3"
2728
},
2829
"require-dev": {
2930
"guzzle/plugin-mock": "*",

doc/proxy-clients.rst

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ Nginx ✓ ✓
9090
Symfony Cache ✓ ✓
9191
============= ======= ======= =======
9292

93-
.. _proxy-client purge::
93+
.. _proxy-client purge:
9494

9595
Purge
9696
~~~~~
@@ -119,7 +119,8 @@ send any headers that you vary on, such as ``Accept``.
119119

120120
.. include:: includes/custom-headers.rst
121121

122-
.. _proxy-client refresh::
122+
.. _proxy-client refresh:
123+
123124
Refresh
124125
~~~~~~~
125126

doc/symfony-cache-configuration.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ to overwrite the method to make it public.
110110
**default**: ``null``
111111

112112
.. _symfony-cache user context:
113+
113114
User Context
114115
~~~~~~~~~~~~
115116

src/SymfonyCache/PurgeSubscriber.php

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use Symfony\Component\HttpFoundation\RequestMatcher;
1717
use Symfony\Component\HttpFoundation\Response;
1818
use Symfony\Component\HttpKernel\HttpKernelInterface;
19+
use Symfony\Component\OptionsResolver\OptionsResolver;
1920

2021
/**
2122
* Purge handler for the symfony built-in HttpCache.
@@ -48,20 +49,17 @@ class PurgeSubscriber extends AccessControlledSubscriber
4849
*/
4950
public function __construct(array $options = array())
5051
{
51-
$extra = array_diff(array_keys($options), array('purge_client_matcher', 'purge_client_ips', 'purge_method'));
52-
if (count($extra)) {
53-
throw new \InvalidArgumentException(sprintf(
54-
'Unsupported purge configuration option(s) "%s"',
55-
implode(', ', $extra)
56-
));
57-
}
52+
$resolver = new OptionsResolver();
53+
$resolver->setDefined(array('purge_client_matcher', 'purge_client_ips', 'purge_method'));
54+
$resolver->setDefaults(array(
55+
'purge_client_matcher' => null,
56+
'purge_client_ips' => null,
57+
'purge_method' => 'PURGE',
58+
));
5859

59-
parent::__construct(
60-
isset($options['purge_client_matcher']) ? $options['purge_client_matcher'] : null,
61-
isset($options['purge_client_ips']) ? $options['purge_client_ips'] : null
62-
);
60+
$this->options = $resolver->resolve($options);
6361

64-
$this->options['purge_method'] = isset($options['purge_method']) ? $options['purge_method'] : 'PURGE';
62+
parent::__construct($this->options['purge_client_matcher'], $this->options['purge_client_ips']);
6563
}
6664

6765
/**

src/SymfonyCache/RefreshSubscriber.php

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use Symfony\Component\HttpFoundation\RequestMatcher;
1717
use Symfony\Component\HttpFoundation\Response;
1818
use Symfony\Component\HttpKernel\HttpKernelInterface;
19+
use Symfony\Component\OptionsResolver\OptionsResolver;
1920

2021
/**
2122
* Refresh handler for the symfony built-in HttpCache.
@@ -43,18 +44,14 @@ class RefreshSubscriber extends AccessControlledSubscriber
4344
*/
4445
public function __construct(array $options = array())
4546
{
46-
$extra = array_diff(array_keys($options), array('refresh_client_matcher', 'refresh_client_ips'));
47-
if (count($extra)) {
48-
throw new \InvalidArgumentException(sprintf(
49-
'Unsupported refresh configuration option(s) "%s"',
50-
implode(', ', $extra)
51-
));
52-
}
47+
$resolver = new OptionsResolver();
48+
$resolver->setDefaults(array(
49+
'refresh_client_matcher' => null,
50+
'refresh_client_ips' => null,
51+
));
52+
$options = $resolver->resolve($options);
5353

54-
parent::__construct(
55-
isset($options['refresh_client_matcher']) ? $options['refresh_client_matcher'] : null,
56-
isset($options['refresh_client_ips']) ? $options['refresh_client_ips'] : null
57-
);
54+
parent::__construct($options['refresh_client_matcher'], $options['refresh_client_ips']);
5855
}
5956

6057
/**

src/SymfonyCache/UserContextSubscriber.php

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Symfony\Component\HttpFoundation\Request;
1616
use Symfony\Component\HttpFoundation\Response;
1717
use Symfony\Component\HttpKernel\HttpKernelInterface;
18+
use Symfony\Component\OptionsResolver\OptionsResolver;
1819

1920
/**
2021
* User context handler for the symfony built-in HttpCache.
@@ -57,32 +58,17 @@ class UserContextSubscriber implements EventSubscriberInterface
5758
*/
5859
public function __construct(array $options = array())
5960
{
60-
$extra = array_diff(
61-
array_keys($options),
62-
array(
63-
'anonymous_hash',
64-
'user_hash_accept_header',
65-
'user_hash_header',
66-
'user_hash_uri',
67-
'user_hash_method',
68-
'session_name_prefix',
69-
)
70-
);
71-
if (count($extra)) {
72-
throw new \InvalidArgumentException(sprintf(
73-
'Unsupported user context configuration option(s) "%s"',
74-
implode(', ', $extra)
75-
));
76-
}
77-
78-
$this->options = $options + array(
61+
$resolver = new OptionsResolver();
62+
$resolver->setDefaults(array(
7963
'anonymous_hash' => '38015b703d82206ebc01d17a39c727e5',
8064
'user_hash_accept_header' => 'application/vnd.fos.user-context-hash',
8165
'user_hash_header' => 'X-User-Context-Hash',
8266
'user_hash_uri' => '/_fos_user_context_hash',
8367
'user_hash_method' => 'GET',
8468
'session_name_prefix' => 'PHPSESSID',
85-
);
69+
));
70+
71+
$this->options = $resolver->resolve($options);
8672
}
8773

8874
/**

tests/Unit/SymfonyCache/PurgeSubscriberTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ public function testOtherMethod()
144144

145145
/**
146146
* @expectedException \InvalidArgumentException
147-
* @expectedExceptionMessage Unsupported
147+
* @expectedExceptionMessage does not exist
148148
*/
149149
public function testInvalidConfiguration()
150150
{

tests/Unit/SymfonyCache/RefreshSubscriberTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ public function testNoRefresh()
120120

121121
/**
122122
* @expectedException \InvalidArgumentException
123-
* @expectedExceptionMessage Unsupported
123+
* @expectedExceptionMessage does not exist
124124
*/
125125
public function testInvalidConfiguration()
126126
{

tests/Unit/SymfonyCache/UserContextSubscriberTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ public function testUserHashUserWithSession($arg, $options)
180180

181181
/**
182182
* @expectedException \InvalidArgumentException
183-
* @expectedExceptionMessage Unsupported
183+
* @expectedExceptionMessage does not exist
184184
*/
185185
public function testInvalidConfiguration()
186186
{

0 commit comments

Comments
 (0)