IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Créer une BaseEntity comme dans les bundles FOS [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Responsable applications intranet
    Inscrit en
    Août 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable applications intranet
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 14
    Points : 15
    Points
    15
    Par défaut Créer une BaseEntity comme dans les bundles FOS
    Bonsoir à tous,

    Voilà j'ai créé un service et j'essaye de créer une entité de base que les utilisateurs devront étendre en créant une entité dans leur bundle (comme dans le FOSUserBundle en fait).

    Si j'ai bien compris le fonctionnement :

    1. Je crée un Model dans MonBundle\Model en abstract
    2. Je crée une entité dans MonBundle\Entity en abstract qui étend le Model
    3. Dans un bundle différent, je crée une entité qui étend l'entité au point, et celle-ci doit contenir un champ id.

    Apparement il doit me manquer qqch, car quand je fais un generate:entities + schema:update dans le bundle Demo de la SE, je n'ai que mon champ id qui se met en bdd.

    Si qqun pouvait m'éclairer, ce serait cool

    Je vous met ici mes codes au cas où:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    <?php
    //Model
    namespace Mediaphragm\VisitorsBundle\Model;
     
    abstract class Visitor
    {
    	protected $id;
     
        /**
    	* @var string
    	*/
        protected $username;
     
        public function __construct()
        {
     
        }
     
    	/**
    	* @return string
    	*/
        public function getUsername()
        {
            return $this->username;
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    //Entity
    namespace Mediaphragm\VisitorsBundle\Entity;
     
    use Mediaphragm\VisitorsBundle\Model\Visitor as AbstractVisitor;
     
    abstract class Visitor extends AbstractVisitor
    {
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <?php
    //Entité dans le bundle Demo qui doit étendre mon bundle
    namespace Acme\DemoBundle\Entity;
     
    use Mediaphragm\VisitorsBundle\Entity\Visitor as BaseVisitor;
    use Doctrine\ORM\Mapping as ORM;
     
    /**
    
     * @ORM\Entity
     * @ORM\Table(name="mediaphragm_visitors")
     */
    class Visitor extends BaseVisitor
    {
     
        /**
         * @ORM\Id
         * @ORM\Column(type="integer")
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        protected $id;
     
    	public function __construct()
    	{
    		parent::__construct();
    	}
     
        /**
         * Get id
         *
         * @return integer 
         */
        public function getId()
        {
            return $this->id;
        }
    }

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 80
    Points
    80
    Par défaut
    Salut,

    Je ne suis pas un expert, mais voici mon avis sur la chose:
    Mettre des classes dans bundle/model c'est inutile. Pourquoi faire des classes d'entité vides ? Bref je trouve bien mieux de directement les mettre en entité. La seule chose est qu'elles ne seront pas abstraites. Mais après tout pourquoi devraient-elles l'être ?

    Pour ce qui est de ton problème c'est tout simplement parce que sur FOSUserBundle les champs ne sont pas définis en annotations mais en XML. C'est pour cela qu'il n'y a pas d'annotations dans la classe abstraite ;-) .

  3. #3
    Inscrit
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 476
    Points
    476
    Par défaut
    Citation Envoyé par Nek.dev Voir le message
    Je ne suis pas un expert, mais voici mon avis sur la chose:
    Mettre des classes dans bundle/model c'est inutile. Pourquoi faire des classes d'entité vides ?
    Pour pouvoir gérer Entité et Document. FOSUB utilise un model car il laisse le choix du type de stockage au dev final.

    Donc effectivement si tu n'as pas besoin de cette flexibilité, pas besoin de passer par un model. Tu aurais une entité qui ressemble à ca : https://github.com/winzou/BookBundle...tity/Entry.php Puis dans ton bundle tu hérites de cette classe comme tu le fais avec celle de FOSUB.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Responsable applications intranet
    Inscrit en
    Août 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable applications intranet
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Tout à fait Winzou, même si dans un premier temps ce n'est pas une priorité pour le bundle de pouvoir travailler aussi bien en odm/orm/couchdb, ce serait bête de ne pas partir sur une base flexible directement.

    J'ai pour finir réussi à faire fonctionner la génération, il s'agissait d'une erreur de type dans mon metadata (je ne suis pas encore tout à fait familiarisé avec le xml )

    ++

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 80
    Points
    80
    Par défaut
    Si tu galères avec le xml essaie de voir avec le yaml. (oui, c'est plus simple je trouve ^^)

  6. #6
    Membre à l'essai
    Homme Profil pro
    Responsable applications intranet
    Inscrit en
    Août 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable applications intranet
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Oui je trouve aussi, mais ce bundle peut se retrouver en public, donc comme préconisé par sf, c'est en xml.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 80
    Points
    80
    Par défaut
    Ah bon c'est préconisé le xml ? Je pensais que c'était le yaml, t'as un lien ?

  8. #8
    Inscrit
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 476
    Points
    476
    Par défaut
    C'est pas spécialement préconisé, mais c'est plus interopérable (plus d'outil lisent le xml que le yml). En pratique le xml est vraiment illisible, c'est se tirer une balle dans le pied que de l'utiliser.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Responsable applications intranet
    Inscrit en
    Août 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable applications intranet
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Ah bon c'est préconisé le xml ? Je pensais que c'était le yaml, t'as un lien ?
    Ici un article traitant des services, qui pour moi est aussi valable pour les entités dans les services : http://fabien.potencier.org/article/...cribe-services


    Ici dans la doc: http://symfony.com/doc/current/cookb...extension.html
    The second method has several specific advantages:

    Much more powerful than simply defining parameters: a specific option value might trigger the creation of many service definitions;
    Ability to have configuration hierarchy
    Smart merging when several configuration files (e.g. config_dev.yml and config.yml) override each other's configuration;
    Configuration validation (if you use a Configuration Class);
    IDE auto-completion when you create an XSD and developers use XML.

  10. #10
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 695
    Points : 188 895
    Points
    188 895
    Par défaut
    Citation Envoyé par mediaphragm Voir le message
    IDE auto-completion when you create an XSD and developers use XML.
    Ce n'est pas impossible autrement, cependant : il suffit d'avoir le plug-in qui va bien pour ça, comme pour tout langage. Sinon, ce n'est pas vraiment un avantage suffisant à mes yeux pour pousser à utiliser du XML au lieu du YAML : seuls de vrais fous passent leur temps à écrire du XML sans aide, les autres utilisent du YAML (ou autre).

  11. #11
    Membre à l'essai
    Homme Profil pro
    Responsable applications intranet
    Inscrit en
    Août 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable applications intranet
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    seuls de vrais fous passent leur temps à écrire du XML sans aide


    Voilà un extrait du premier document:

    What's the best Format for your Service Definitions?

    Using the XML format gives you several advantages over the YAML one:

    When a XML file is loaded, it is automatically validated with the built-in services.xsd file;

    The XML can be auto-completed in IDEs;

    The XML format is faster than the YAML one;

    The XML format as no external dependencies (the YAML format relies on the sfYAML component).


  12. #12
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 695
    Points : 188 895
    Points
    188 895
    Par défaut
    Citation Envoyé par mediaphragm Voir le message
    Voilà un extrait du premier document:
    Pourtant, quand un YAML contient des erreurs, Symfony2 pousse une gueulante (à voir jusqu'où est poussée la vlidation ; cependant, dès qu'il y a quelque chose de bizarre, ça fait une erreur en dev, donc obn ) ; il y a un format encore plus rapide : le PHP (vu qu'on se base sur le moteur d'analyse de l'exécutable, pas d'appel supplémentaire vers l'extérieur, fichier plus léger à charger, etc.). Donc bon !

  13. #13
    Inscrit
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 476
    Points
    476
    Par défaut
    mediaphragm attention à ne pas nous sortir des post valable pour symfony premier du nom :p
    Les yaml sont validés également. Le yaml n'est pas autocomplété... parce qu'il n'en a pas besoin ! Le XML et le Yaml et le PHP sont exactement équivalent niveau perf, car mis en cache. Le composant sfYaml n'existe plus sous Symfony2 :-°

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SP-2010] Créer une liste déroutante dans les propriétés de la webpart
    Par Adlery dans le forum SharePoint
    Réponses: 2
    Dernier message: 13/02/2012, 18h47
  2. Réponses: 15
    Dernier message: 27/09/2010, 23h29
  3. [SP-2007] Créer une fonction utilisable dans les champs calculés
    Par lolomoss dans le forum SharePoint
    Réponses: 4
    Dernier message: 25/06/2009, 09h49
  4. Réponses: 3
    Dernier message: 18/06/2008, 12h49
  5. Réponses: 0
    Dernier message: 17/06/2008, 12h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo