Serializer documentation can be improved (possibly contains an error?)
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Documentación
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- php, symfony
- Área
- documentation
Línea de trabajo
Comienza con la página de documentación de Symfony Serializer, especialmente con la sección sobre cómo cambiar el contexto de serialización por elemento y su ejemplo de decorador. Verifica el comportamiento de almacenamiento en caché de getSupportedTypes y compáralo con la alternativa escalable propuesta; se considera terminado cuando ambos ejemplos sean técnicamente correctos y la documentación explique claramente cuándo usar cada enfoque.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
2 part question, both relating to (Symfony) Serializer docs.
1:
The Serializer docs show an example of decorating the json-ld normalizer to add a few fields, but wouldn't a completely custom serializer be better so the getSupportedTypes can be used to efficiently decide if this serializer should be used instead of having 20,30, maybe 100s of services decorating the json-ld normalizer and it having to go through all those layers with like if (!$data instanceof ...) or if (!is_a($type, SomeClass::class, true))
Should we add an example for a cache-able/scalable solution that doesn't involve decorating the json-ld one?
2:
Then looking at the example code here:
https://api-platform.com/docs/core/serialization/#changing-the-serialization-context-on-a-per-item-basis-for-symfony
Specifically:
public function supportsNormalization($data, $format = null, array $context = [])
{
// Make sure we're not called twice
if (isset($context[self::ALREADY_CALLED])) {
return false;
}
return $data instanceof Book;
}
public function getSupportedTypes(?string $format): array
{
return [
Book::class => true
];
}
Returning true on getSupportedTypes means the usage of the serializer gets cached, and the supportsNormalization method is only checked once, then never again. So adding the self::ALREADY_CALLED in the normalize method doesn't do anything,... next time it goes through this normalizer, the supportsNormalization is skipped and boom, it now executed normalize on an item that has possibly already gone through it?
I can contribute a change for both things, but would like to get a second opinion first to see if I'm maybe missing something.
- Lenguaje dominante
- Sin datos de lenguaje
- Estrellas
- 181
- Forks
- 1.1k
- Merge medio
- 1 d 10 h
- PR fusionados (30 d)
- 24
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de api-platform/docs
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
api-platform/docs#2284 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
api-platform/docs#2318 ·
-
Graphql documentation Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
api-platform/docs#2310 ·
-
Needs Work
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
api-platform/docs#2133 · 9 comentarios · 1 reacción ·
-
good first issue
Dificultad 1/5 Menos de una hora Aptitud para principiantes 58/100
api-platform/docs#1450 · 2 comentarios ·
Todos los issues de api-platform/docs
Issues similares
-
Link Checker Report Abiertoautomated issue report
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Humanity AI Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
numfocus/project-fundraising#166 ·
-
area:proxy bug security severity:low track:open-source
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100