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

BOUML Discussion :

bouml, génération de code php et dépendances


Sujet :

BOUML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 38
    Par défaut bouml, génération de code php et dépendances
    Bonsoir,

    J'ai récemment téléchargé le soft de Bruno Pages dans le cadre d'un assez gros projet PHP. Je profite de ce post pour féliciter son auteur (qui rode sur ce forum a priori) car il est très complet et très bien pensé.

    J'ai cependant quelques petites questions à propos de la génération de code...
    J'ai procédé à l'insertion de plusieurs classes liées entre elles par des relations structurelles (généralement des realizations ou des dependencies). J'ai généré un artifact par classe. Lors de la generation proprement dite, tout semble fonctionner correctement. Néanmoins, lorsque j'ai ouvert les fichiers source générés, je n'ai trouvé aucun include/require qui permette de résoudre les dépendances entre mes différentes classes.

    Aussi j'aimerais savoir si la génération des include était possible et si oui, comment puis-je procéder. Merci d'avance à ceux qui auront lû ce post

  2. #2
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 551
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 551
    Par défaut
    Bonjour,

    Php est le seul langage pour lequel il n'y a pas de génération spécifique d'include/require : dans la définition d'un artifact il n'y a pas de macro ${includes} ou autre

    pour le moment le seul moyen d'en demander la génération est de les écrire à la main directement dans la définition de l'artifact

    questions pour une éventuelle prise en charge par le générateur :
    • j'ai l'impression qu'on peut mélanger sans problèmes les formes include et require et donc qu'une seule macro ${includes-requires} suffit (pas besoin d'avoir les deux macros spécifiques ${includes} et ${requires}), vrai ?
    • à priori la forme include/require doit aussi pouvoir spécifier le chemin d'accès, je ne sais pas s'il y a des règles en vigueur concernant Php, est-ce que pouvoir choisir comme pour C++ entre without path,with absolute path et with relative path convient ?
    • par contre je ne sais pas s'il y a l'équivalent de l'option -I des compilateurs C++, et donc s'il est nécessaire d'avoir aussi with root relative path


    P.S. je rode aussi dans le sous forum dédié à Bouml
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 38
    Par défaut
    Il n'y a en effet pas de réelle différence entre require et include si ce n'est le niveau d'erreur qu'il provoque. Si un include échoue, il produira un warning mais le programme poursuivra son execution tandis que lorsqu'un require échoue, il stoppe l'execution du script par un fatal error.

    Au niveau du chemin d'accès, il n'y a pas de grande différence avec ce qui se passe en C++. On peut spécifier un chemin relatif ou absolu (la syntaxe <> n'est pas présente et n'a pas lieu d'être). Le fait de spécifier des chemins relatifs posent cependant quelques problèmes étant donné que ces chemins sont relatifs au fichier du script executé et non au fichier du script qui fait l'inclusion. Les développeurs qui souhaitent travailler avec des chemins relatifs utilisent donc généralement la solution suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once dirname(__FILE__) . "/relative_path/script.php";
    PS: je n'avais pas vu le forum bouml

  4. #4
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 551
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 551
    Par défaut
    ok, déjà il y a donc 4 formes : include include_once require et require_once (légales ou non suivant la version de Php), il faudra donc 4 stéréotypes pour permettre à l'utilisateur de choisir

    Citation Envoyé par zouip Voir le message
    Le fait de spécifier des chemins relatifs posent cependant quelques problèmes étant donné que ces chemins sont relatifs au fichier du script executé et non au fichier du script qui fait l'inclusion.
    cela veut dire que :
    • en mode relatif il faut toujours utiliser dirname, même si le script incluant et le script inclus sont dans le même répertoire, au cas où le script incluant soit lui même inclus par un troisième placé ailleurs.
    • le mode "relatif au projet" n'a pas de sens


    PS: je n'avais pas vu le forum bouml
    et pourtant c'est celui que je référence sur les sites de bouml
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  5. #5
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 551
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 551
    Par défaut
    Citation Envoyé par bruno_pages Voir le message
    le mode "relatif au projet" n'a pas de sens
    je viens de voir qu'il est possible de spécifier des répertoire grâce à include_path, le relatif projet semble donc utile

    Citation Envoyé par zouip
    ces chemins sont relatifs au fichier du script executé et non au fichier du script qui fait l'inclusion
    les essais que j'ai fait contredise cela :
    dans le répertoire courant j'ai le fichier f.php et le sous répertoire sub qui lui même contient les fichiers f1.php et f2.php
    f.php require sub/f1.php et sub/f1.php require f2.php

    je peux sans problème faire "php f.php" ou "php sub/f1.php" donc en particulier la forme require f2.php ne pose pas de problème alors que le chemin est bien relatif au fichier qui fait l'inclusion, ce qui me parait être la moindre des choses. J'ai aussi fait des essais avec un sous répertoire subsub sous sub.

    je ne vois donc pas d'intérêt à utiliser dirname

    est-ce lié à l'utilisation de php 5 ?
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  6. #6
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 551
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 551
    Par défaut
    zouip, sans réponse à mes questions je ne pourrais pas ajouter la production automatique des includes/requires pour Php
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Par défaut
    Du nouveau de ce coté?
    Je suis sous debian lenny, et j'ai pas trop la motiv de mettre mon nez dans le code ^^

    Bruno, pour infos:

    require et require_once -> génère une erreur fatale si le fichier n'est pas trouvé
    include et include_once -> génère un warning, mais le script continue

    Donc dans la mesure ou les fichiers a inclure sont "a prioris" nécéssaire a la déclarations des classes et/ou à l'exécution du code, il me semble raisonnable d'oublier les include au profit des require.

    require_once -> s'assure que le fichier ne serat pas inclut plusieures fois, autrement dit, si le fichier a déjé été inclu, ne fait rien.

    Dans la mesure ou les fichiers inclus sont a prioris des déclarations de classe ou de fonctions, il me semble au final raisonnable d'utiliser require_once.

    Tout ca pour dire, te galère pas avec les differentes fonctions d'inclusions, je pense qu'utiliser uniquement require_once de la meme facon qu'un #include en c++ est amplement suffisant.

    En ce qui concerne la facon dont php trouve les fichiers:
    Si le chemin est absolu ou relatif (cad qu'il commence par "/", "./" ou "../"), php cherche le fichier a l'endroit spécifié uniquement, pour les chemins relatif la recherche se fait a partir du script courant.
    Si aucun chemin n'est spécifié ("repertoire/fichier.php"), la recherche se fait dans les repertoires de l'include path (equivalent de PATH sous linux).

    Autrement, une option pour les includes relatifs au projet signifierait que le répertoire du projet est dans le include_path.
    Si les includes ne sont pas relatifs au projet deux options se présentent: relatifs au fichier (tout les includes seront alors précédés de "./") ou absoluts.

    plus d'infos: http://www.php.net/manual/fr/function.include.php

Discussions similaires

  1. Génération de code (PHP avec Smarty)
    Par dav808 dans le forum Langage
    Réponses: 0
    Dernier message: 25/04/2011, 17h59
  2. Génération de code & reverse pour PHP
    Par bruno_pages dans le forum BOUML
    Réponses: 10
    Dernier message: 09/10/2007, 09h30
  3. UML et génération de code PHP
    Par hgede dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 17/09/2007, 17h35
  4. Génération de code avec BOUML
    Par petit-teckel dans le forum BOUML
    Réponses: 4
    Dernier message: 03/03/2007, 17h42

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