Witam,
Mam trochę głupi dylemat: otóż posiadam metodę json(), której zadaniem jest zwrócenie odpowiedniego obiektu JsonResponse. Jeśli do tej metody zostaną przekazane encje, zostaną one domyślnie zserializowane. Jednak chcę, aby ta serializacja była opcjonalna (bo może ktoś chce to zrobić ręcznie, np. przy bardziej kompleksowych danych serializacja domyślna może nie być odpowiednia), zatem metoda wygląda mniej więcej tak:
/**
* Returns JSON encoded response
*
* @param array $data Data supposed to be returned
* @param string $status Response status code
* @param bool $serialization If true, default entity serialization will be applied
* @return JsonResponse
*/
protected function json(array $data = [], string $status = Response::HTTP_OK, bool $serialization = true): JsonResponse
{
// jeśli $serialization jest równe true, przekazane w $data encje zostają serializowane
// serializacja encji jest wykonywana przez klasę EntitySerializer
}
I tutaj pojawia się problem: bool jako parametr metody nie jest zbyt dobrą praktyką. Zastanawiałem się nad tym, aby utworzyć stałą, która byłaby używana jako parametr $serialization, np. coś takiego:
bool $serialization = EntitySerializer::OMMIT_SERIALIZATION
Nie jestem jednak pewien, jak to dobrze zaprojektować: czy stała powinna być własnością EntitySerializer? Nie mogę utworzyć stałej dla klasy posiadającej metodę json(), ponieważ jest to trait. Ponadto, czy to powinien być bool, czy coś innego? Czy opłaca się w ogóle tworzyć do tego stałą (a co za tym idzie, importować całą klasę), której wartością byłby po prostu bool? Zostawić po prostu true/false?
Także pytam bardziej doświadczonych kolegów: jak to zrobić, aby było dobrze? :)