name: GetSetMethodNormalizer
class_comment: null
dependencies:
- name: LegacyIgnore
  type: class
  source: Symfony\Component\Serializer\Annotation\Ignore
- name: Ignore
  type: class
  source: Symfony\Component\Serializer\Attribute\Ignore
properties:
- name: reflectionCache
  visibility: private
  comment: null
methods:
- name: supports
  visibility: private
  parameters:
  - name: class
  - name: readAttributes
  comment: "# * Converts between objects with getter and setter methods and arrays.\n\
    # *\n# * The normalization process looks at all public methods and calls the ones\n\
    # * which have a name starting with get and take no parameters. The result is\
    \ a\n# * map from property names (method name stripped of the get prefix and converted\n\
    # * to lower case) to property values. Property values are normalized through\
    \ the\n# * serializer.\n# *\n# * The denormalization first looks at the constructor\
    \ of the given class to see\n# * if any of the parameters have the same name as\
    \ one of the properties. The\n# * constructor is then called with all parameters\
    \ or an exception is thrown if\n# * any required parameters were not present as\
    \ properties. Then the denormalizer\n# * walks through the given map of property\
    \ names to property values to see if a\n# * setter method exists for any of the\
    \ properties. If a setter exists it is\n# * called with the property value. No\
    \ automatic denormalization of the value\n# * takes place.\n# *\n# * @author Nils\
    \ Adermann <naderman@naderman.de>\n# * @author K\xE9vin Dunglas <dunglas@gmail.com>\n\
    # */\n# final class GetSetMethodNormalizer extends AbstractObjectNormalizer\n\
    # {\n# private static $reflectionCache = [];\n# private static array $setterAccessibleCache\
    \ = [];\n# \n# public function getSupportedTypes(?string $format): array\n# {\n\
    # return ['object' => true];\n# }\n# \n# public function supportsNormalization(mixed\
    \ $data, ?string $format = null, array $context = []): bool\n# {\n# return parent::supportsNormalization($data,\
    \ $format) && $this->supports($data::class, true);\n# }\n# \n# public function\
    \ supportsDenormalization(mixed $data, string $type, ?string $format = null, array\
    \ $context = []): bool\n# {\n# return parent::supportsDenormalization($data, $type,\
    \ $format) && $this->supports($type, false);\n# }\n# \n# /**\n# * Checks if the\
    \ given class has any getter or setter method."
- name: isGetMethod
  visibility: private
  parameters:
  - name: method
  comment: '# * Checks if a method''s name matches /^(get|is|has).+$/ and can be called
    non-statically without parameters.'
- name: isSetMethod
  visibility: private
  parameters:
  - name: method
  comment: '# * Checks if a method''s name matches /^set.+$/ and can be called non-statically
    with one parameter.'
- name: extractAttributes
  visibility: protected
  parameters:
  - name: object
  - name: format
    default: 'null'
  - name: context
    default: '[]'
  comment: null
- name: getAttributeValue
  visibility: protected
  parameters:
  - name: object
  - name: attribute
  - name: format
    default: 'null'
  - name: context
    default: '[]'
  comment: null
- name: setAttributeValue
  visibility: protected
  parameters:
  - name: object
  - name: attribute
  - name: value
  - name: format
    default: 'null'
  - name: context
    default: '[]'
  comment: null
- name: isAllowedAttribute
  visibility: protected
  parameters:
  - name: classOrObject
  - name: attribute
  - name: format
    default: 'null'
  - name: context
    default: '[]'
  comment: null
traits:
- Symfony\Component\Serializer\Attribute\Ignore
interfaces: []