schmittjoh / serializer

Library for (de-)serializing data of any complexity (supports JSON, and XML)
http://jmsyst.com/libs/serializer
MIT License
2.32k stars 586 forks source link

AccessType attribute constructor expects array #1531

Open SimonTod opened 10 months ago

SimonTod commented 10 months ago
Q A
Bug report? yes
Feature request? no
BC Break report? yes
RFC? no

As declared in the documentation, the next annotation works

use JMS\Serializer\Annotation\AccessType;

/** @AccessType("public_method") */
class User { }

But I could not make it work using the php attribute

use JMS\Serializer\Annotation\AccessType;

#[AccessType('public_method')]
class User { }

Error thrown :

Uncaught Error: JMS\Serializer\Annotation\AccessType::__construct(): Argument #1 ($values) must be of type array, string given

As we can see in https://github.com/schmittjoh/serializer/blob/master/src/Annotation/AccessType.php#L24 :

    public function __construct(array $values = [], ?string $type = null)
SimonTod commented 10 months ago

I fixed the issue with the next syntax :

use JMS\Serializer\Annotation\AccessType;

#[AccessType(type: 'public_method')]
class User { }

I think it would be a good thing to update the documentation

scyzoryck commented 10 months ago

Thanks for feedback! I think it is time to make docs Attributes first :)

SimonTod commented 10 months ago

There is a small section about it : Converting your annotations to attributes