モデルには、そのプロパティのアノテーションにJMSシリアライザが使用されています。 このオブジェクトを使用する別のクラスでは、アノテーションの情報にアクセスしたいと思います。 例:あなたが見ることができるようにAnnotationによって定義されたオブジェクトプロパティのSerializedNameにアクセスします。
class ExampleObject
{
/**
* @var int The status code of a report
*
* @JMS\Expose
* @JMS\Type("integer")
* @JMS\SerializedName("StatusCode")
* @Accessor(getter="getStatusCode")
*/
public $statusCode;
}
プロパティは、私たちのコーディング標準のためokですキャメルケースのスタイル、で命名されました。しかし、このオブジェクトの情報を外部サービスに渡すためには、SerializedNameが必要です。
私の考えは、このクラスに、AnnotationのSerializedNameのすべてのプロパティを返すメソッドを書き込むことです。メソッドを介してアノテーションの情報にアクセスすることは可能ですか?はいの場合はどうですか?
私の考えのようなものです:私はいくつかの助けが必要な場所だから、「魔法」の部分がある
public function getSerializerName($propertyName)
{
$this->$propertyName;
// Do some magic here with the annotation info
return $serializedName;
}
。