Skip to content

Commit 253f09a

Browse files
committed
Adopt new Symfony options-resolver behavior
1 parent a0a9635 commit 253f09a

File tree

2 files changed

+53
-47
lines changed

2 files changed

+53
-47
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"require": {
3434
"php": "^7.3 || ^8.0",
3535
"ext-json": "*",
36-
"symfony/options-resolver": "^4.4 || ^5 || ^6 || ^7",
36+
"symfony/options-resolver": "^4.4 || ^5 || ^6 || ^7 || ^8",
3737
"psr/cache": "^1 || ^2 || ^3",
3838
"psr/simple-cache": "^1 || ^2 || ^3",
3939
"psr/event-dispatcher": "^1",

lib/Tmdb/Client.php

Lines changed: 52 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -95,55 +95,61 @@ protected function configureOptions(array $options)
9595
'base_uri' => null,
9696
'api_token' => null,
9797
'guest_session_token' => null,
98-
'http' => function (OptionsResolver $optionsResolver) {
99-
$optionsResolver->setDefaults(
100-
[
101-
'client' => null,
102-
'request_factory' => null,
103-
'response_factory' => null,
104-
'stream_factory' => null,
105-
'uri_factory' => null,
106-
]
107-
);
108-
$optionsResolver->setRequired(
109-
[
110-
'client',
111-
'request_factory',
112-
'response_factory',
113-
'stream_factory',
114-
'uri_factory'
115-
]
116-
);
117-
$optionsResolver->setAllowedTypes('client', [ClientInterface::class, 'null']);
118-
$optionsResolver->setAllowedTypes('request_factory', [RequestFactoryInterface::class, 'null']);
119-
$optionsResolver->setAllowedTypes('response_factory', [ResponseFactoryInterface::class, 'null']);
120-
$optionsResolver->setAllowedTypes('stream_factory', [StreamFactoryInterface::class, 'null']);
121-
$optionsResolver->setAllowedTypes('uri_factory', [UriFactoryInterface::class, 'null']);
122-
},
123-
'hydration' => function (OptionsResolver $optionsResolver) {
124-
$optionsResolver->setDefaults(
125-
[
126-
'event_listener_handles_hydration' => false,
127-
'only_for_specified_models' => []
128-
]
129-
);
130-
$optionsResolver->setAllowedTypes('event_listener_handles_hydration', ['bool']);
131-
// @todo 4.1 validate these are actually models
132-
$optionsResolver->setAllowedTypes('only_for_specified_models', ['array']);
133-
},
134-
'event_dispatcher' => function (OptionsResolver $optionsResolver) {
135-
$optionsResolver->setDefaults(
136-
[
137-
'adapter' => null
138-
]
139-
);
140-
141-
$optionsResolver->setRequired(['adapter']);
142-
$optionsResolver->setAllowedTypes('adapter', [EventDispatcherInterface::class]);
143-
}
98+
'http' => [],
99+
'hydration' => [],
100+
'event_dispatcher' => [],
144101
]
145102
);
146103

104+
$resolver->setOptions('http', function (OptionsResolver $optionsResolver) {
105+
$optionsResolver->setDefaults(
106+
[
107+
'client' => null,
108+
'request_factory' => null,
109+
'response_factory' => null,
110+
'stream_factory' => null,
111+
'uri_factory' => null,
112+
]
113+
);
114+
$optionsResolver->setRequired(
115+
[
116+
'client',
117+
'request_factory',
118+
'response_factory',
119+
'stream_factory',
120+
'uri_factory'
121+
]
122+
);
123+
$optionsResolver->setAllowedTypes('client', [ClientInterface::class, 'null']);
124+
$optionsResolver->setAllowedTypes('request_factory', [RequestFactoryInterface::class, 'null']);
125+
$optionsResolver->setAllowedTypes('response_factory', [ResponseFactoryInterface::class, 'null']);
126+
$optionsResolver->setAllowedTypes('stream_factory', [StreamFactoryInterface::class, 'null']);
127+
$optionsResolver->setAllowedTypes('uri_factory', [UriFactoryInterface::class, 'null']);
128+
});
129+
130+
$resolver->setOptions('hydration', function (OptionsResolver $optionsResolver) {
131+
$optionsResolver->setDefaults(
132+
[
133+
'event_listener_handles_hydration' => false,
134+
'only_for_specified_models' => []
135+
]
136+
);
137+
$optionsResolver->setAllowedTypes('event_listener_handles_hydration', ['bool']);
138+
// @todo 4.1 validate these are actually models
139+
$optionsResolver->setAllowedTypes('only_for_specified_models', ['array']);
140+
});
141+
142+
$resolver->setOptions('event_dispatcher', function (OptionsResolver $optionsResolver) {
143+
$optionsResolver->setDefaults(
144+
[
145+
'adapter' => null
146+
]
147+
);
148+
149+
$optionsResolver->setRequired(['adapter']);
150+
$optionsResolver->setAllowedTypes('adapter', [EventDispatcherInterface::class]);
151+
});
152+
147153
$resolver->setRequired(
148154
[
149155
'host',

0 commit comments

Comments
 (0)