You are here

class OptionalParametersFilter in Zircon Profile 8

Same name in this branch
  1. 8 vendor/zendframework/zend-hydrator/src/Filter/OptionalParametersFilter.php \Zend\Hydrator\Filter\OptionalParametersFilter
  2. 8 vendor/zendframework/zend-stdlib/src/Hydrator/Filter/OptionalParametersFilter.php \Zend\Stdlib\Hydrator\Filter\OptionalParametersFilter
Same name and namespace in other branches
  1. 8.0 vendor/zendframework/zend-hydrator/src/Filter/OptionalParametersFilter.php \Zend\Hydrator\Filter\OptionalParametersFilter

Filter that includes methods which have no parameters or only optional parameters

Hierarchy

Expanded class hierarchy of OptionalParametersFilter

1 file declares its use of OptionalParametersFilter
OptionalParametersFilter.php in vendor/zendframework/zend-stdlib/src/Hydrator/Filter/OptionalParametersFilter.php

File

vendor/zendframework/zend-hydrator/src/Filter/OptionalParametersFilter.php, line 20

Namespace

Zend\Hydrator\Filter
View source
class OptionalParametersFilter implements FilterInterface {

  /**
   * Map of methods already analyzed
   * by {@see OptionalParametersFilter::filter()},
   * cached for performance reasons
   *
   * @var bool[]
   */
  protected static $propertiesCache = [];

  /**
   * {@inheritDoc}
   */
  public function filter($property) {
    if (isset(static::$propertiesCache[$property])) {
      return static::$propertiesCache[$property];
    }
    try {
      $reflectionMethod = new ReflectionMethod($property);
    } catch (ReflectionException $exception) {
      throw new InvalidArgumentException(sprintf('Method %s doesn\'t exist', $property));
    }
    $mandatoryParameters = array_filter($reflectionMethod
      ->getParameters(), function (ReflectionParameter $parameter) {
      return !$parameter
        ->isOptional();
    });
    return static::$propertiesCache[$property] = empty($mandatoryParameters);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
OptionalParametersFilter::$propertiesCache protected static property Map of methods already analyzed by {cached for performance reasons
OptionalParametersFilter::filter public function Should return true, if the given filter does not match Overrides FilterInterface::filter