@@ 229-269 (lines=41) @@ | ||
226 | * @throws BadMethodCallException If custom prefix is not an ``string`` instance. |
|
227 | * @see ICustomPrefixedPropertiesContainer::getCustomSetterPrefix() |
|
228 | */ |
|
229 | protected static function getPropertySetter($name) |
|
230 | { |
|
231 | $args = [ |
|
232 | 'class' => get_called_class(), |
|
233 | ]; |
|
234 | ||
235 | $prefix = 'set'; |
|
236 | ||
237 | $args['name'] = static::ensurePropertyExists($name, $args['class']); |
|
238 | ||
239 | try { |
|
240 | $setter = static::ensureMethodExists($prefix.$args['name']); |
|
241 | } catch (InvalidArgumentException $error) { |
|
242 | $msg = msg('"{name}" property has not a setter method in "{class}".', $args); |
|
243 | ||
244 | if (is_subclass_of($args['class'], ICustomPrefixedPropertiesContainer::class)) { |
|
245 | // If not available standard setter, check if custom available |
|
246 | try { |
|
247 | $prefix = Text::ensureIsString(static::getCustomSetterPrefix()); |
|
248 | } catch (InvalidArgumentException $e) { |
|
249 | $msg = msg( |
|
250 | '"{class}::getCustomSetterPrefix" method must to return an string.', |
|
251 | $args['class'] |
|
252 | ); |
|
253 | ||
254 | throw new BadMethodCallException($msg, 31, $e); |
|
255 | } |
|
256 | ||
257 | try { |
|
258 | $setter = static::ensureMethodExists($prefix.$args['name']); |
|
259 | } catch (InvalidArgumentException $e) { |
|
260 | throw new InvalidArgumentException($msg, 32, $e); |
|
261 | } |
|
262 | } else { |
|
263 | // Error for non custom prefixes |
|
264 | throw new InvalidArgumentException($msg, 30, $error); |
|
265 | } |
|
266 | } |
|
267 | ||
268 | return $setter; |
|
269 | } |
|
270 | ||
271 | ||
272 | /** |
|
@@ 283-323 (lines=41) @@ | ||
280 | * @throws BadMethodCallException If custom prefix is not an ``string`` instance. |
|
281 | * @see ICustomPrefixedPropertiesContainer::getCustomGetterPrefix() |
|
282 | */ |
|
283 | protected static function getPropertyGetter($name) |
|
284 | { |
|
285 | $args = [ |
|
286 | 'class' => get_called_class(), |
|
287 | ]; |
|
288 | ||
289 | $prefix = 'get'; |
|
290 | ||
291 | $args['name'] = static::ensurePropertyExists($name, $args['class']); |
|
292 | ||
293 | try { |
|
294 | $getter = static::ensureMethodExists($prefix.$args['name']); |
|
295 | } catch (InvalidArgumentException $error) { |
|
296 | $msg = msg('"{name}" property has not a getter method in "{class}".', $args); |
|
297 | ||
298 | if (is_subclass_of($args['class'], ICustomPrefixedPropertiesContainer::class)) { |
|
299 | // If not available standard getter, check if custom available |
|
300 | try { |
|
301 | $prefix = Text::ensureIsString(static::getCustomGetterPrefix()); |
|
302 | } catch (InvalidArgumentException $e) { |
|
303 | $msg = msg( |
|
304 | '"{class}::getCustomGetterPrefix" method must to return an string.', |
|
305 | $args['class'] |
|
306 | ); |
|
307 | ||
308 | throw new BadMethodCallException($msg, 31, $e); |
|
309 | } |
|
310 | ||
311 | try { |
|
312 | $getter = static::ensureMethodExists($prefix.$args['name']); |
|
313 | } catch (InvalidArgumentException $e) { |
|
314 | throw new InvalidArgumentException($msg, 32, $e); |
|
315 | } |
|
316 | } else { |
|
317 | // Error for non custom prefixes |
|
318 | throw new InvalidArgumentException($msg, 30, $error); |
|
319 | } |
|
320 | } |
|
321 | ||
322 | return $getter; |
|
323 | } |
|
324 | } |
|
325 |