public static function byObjectMethod($values, $method)
    {
        if (isset($values) && Inspector::isTraversable($values)) {
            if (is_array($values)) {
                $flat_values = array();
                $setter = 'setArrayValue';
            } else {
                $flat_values = new \stdClass();
                $setter = 'setObjectValue';
            }

            foreach ($values as $key => $value) {
                if (is_object($value) && method_exists($value, $method)) {
                    $flat_value = $value->{$method}();
                    static::$setter($flat_values, $key, $flat_value);
                } else {
                    static::$setter($flat_values, $key, $value);
                }
            }

            return $flat_values;
        }

        return $values;
    }
public static function byObjectMethod($values, $method)
    {
        if (isset($values) && Inspector::isTraversable($values)) {
            if (is_array($values)) {
                $flat_values = array();
                $setter = 'setArrayValue';
            } else {
                $flat_values = new \stdClass();
                $setter = 'setObjectValue';
            }

            foreach ($values as $key => $value) {
                if (is_object($value) && method_exists($value, $method)) {
                    $flat_value = $value->{$method}();
                    static::$setter($flat_values, $key, $flat_value);
                } else {
                    static::$setter($flat_values, $key, $value);
                }
            }

            return $flat_values;
        }

        return $values;
    }
public static function byObjectMethod ( $ values , $ method ) { if ( isset ( $ values ) && Inspector :: isTraversable ( $ values ) ) { if ( is_array ( $ values ) ) { $ flat_values = array ( ) ; $ setter = 'setArrayValue' ; } else { $ flat_values = new \ stdClass ( ) ; $ setter = 'setObjectValue' ; } foreach ( $ values as $ key => $ value ) { if ( is_object ( $ value ) && method_exists ( $ value , $ method ) ) { $ flat_value = $ value -> { $ method } ( ) ; static :: $ setter ( $ flat_values , $ key , $ flat_value ) ; } else { static :: $ setter ( $ flat_values , $ key , $ value ) ; } } return $ flat_values ; } return $ values ; }
Create a flattened object by calling a method on all values provided.

@param mixed  $values The traversable values to flatten.
@param string $method The method name to call on all values.

@return \stdClass|array|null The flatten values.
Create a flattened object by calling a method on all values provided .