2 votes

Doctrine 2 ClassMetadata avec annotations personnalisées

J'essaie de coder le processus de création d'objets Zend_Form en utilisant les ClassMetadatas de Doctrine2 afin que la génération de formulaires pour mon application de base de données client soit plus facile.

J'avais besoin d'un endroit pour stocker les étiquettes des éléments, les descriptions, etc. L'utilisation de balises phpdoc personnalisées semblait être une bonne idée. Mais il semble que ClassMetadataInfo ne fournisse pas d'annotations en dehors de ce qu'il attend.

C'est sensé, je suppose, mais j'ai du mal à trouver un moyen de faire analyser le bloc phpdoc dans son intégralité.

J'ai envisagé d'utiliser getReflectionClass() et de l'analyser moi-même, mais je perdrais l'avantage de la mise en cache. L'analyseur Doctrine2 fonctionne très bien pour ce qu'il fait, mais je n'arrive pas à m'y retrouver !

Pouvoir utiliser le phpdoc courte description comme étiquette d'élément, et longue description car la description serait plutôt pratique pour mes amitiés de forme<>modèle.

Quelqu'un d'autre a réfléchi à cette question ?

3voto

Boris Guéry Points 23606

Dotrine2 fournit à la fois un AnnotationDriver (qui est utilisé par l'ORM) et un AnnotationReader (utilisé par le driver et qui fournit une méthode plus abstraite).

Jetez un coup d'œil à la source

Doctrine \ORM\Mapping\Driver\AnnotationDriver

Doctrine \Common\Annotations\AnnotationReader

3voto

Samuel Horwitz Points 101

Au cas où quelqu'un trouverait cette réponse : La dernière version de Doctrine comprend dès à présent un lecteur d'annotations plus avancé, incluant des mécanismes de mise en cache (ce que vous souhaitez probablement). Jetez un coup d'œil à la documentation sur la doctrine pour de beaux exemples d'utilisation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X