Publicité
+ Répondre à la discussion Actualité déjà publiée
Page 5 sur 13 PremièrePremière 123456789 ... DernièreDernière
Affichage des résultats 81 à 100 sur 256
  1. #81
    Membre Expert

    Homme Profil pro
    Inscrit en
    janvier 2004
    Messages
    1 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : janvier 2004
    Messages : 1 244
    Points : 1 352
    Points
    1 352

    Par défaut

    Nous sommes sur un forum d'aide a la base... et donc nous sommes censés aider plus ou moins des gens a mettre au point leurs scripts... Or je dirais que peut etre 30% des problemes peuvent etre résolus avec la regle n°1 ou n°2.
    Tout cela est évidemment a utiliser en phase de conception, pas de production... personnellement, AUCUNE requete ne s'affiche sur mon site, meme en cas d'erreur, mais je les logs quand meme dans un fichier a part pour détecter ce qui ne va pas.

  2. #82
    Membre chevronné Avatar de Korko Fain
    Étudiant
    Inscrit en
    août 2005
    Messages
    632
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2005
    Messages : 632
    Points : 625
    Points
    625

    Par défaut

    Justement, nous nous adressons nouvent à des néophytes qui ne font pas forcement la différence entre la phase de conception/test et la phase de fonctionnement. Il est important de préciser pour ces personnes.

  3. #83
    Membre Expert Avatar de Djakisback
    Inscrit en
    février 2005
    Messages
    1 971
    Détails du profil
    Informations forums :
    Inscription : février 2005
    Messages : 1 971
    Points : 1 926
    Points
    1 926

    Par défaut

    ne jamais écrire sur la sortie et la question des perfs ne se pose pas
    Salut,
    tu peux être plus clair, stp ?

  4. #84
    Expert Confirmé Sénior
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    juillet 2004
    Messages
    2 994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2004
    Messages : 2 994
    Points : 6 085
    Points
    6 085

    Par défaut

    tu ne fais aucun echo en cours de route tu construit ta sortie dans un buffer et tu ne fais qu'un seul et unique print ou echo

    tu n'auras donc pas à te poser la question des perfs sur les différentes façon de faire un echo.

    de plus si aulieu de construire une chaine de caractère qui contient le HTML à générer tu construit un arbre (objet ou array) contenant les élément à afficher

    tu peux produire à la fin un format totalement différent de celui-ci au quel tu pensais au départ sans modifier ton programme.

    enfin si tu trouve que ton script à une fonction que tu peux réutiliser ailleur il devient simple d'en faire une fonction

    et pour finir qi pendant l'utilisation de ton script on relève un pb il est facile de savoir si c'est un pb d'affichage et donc tu ne touche qu'à l'affichage qui ets à un seul endroit ou si c'est fonctionnel auqu'el ca tu touche la fonction sans risque de casser l'affichage

    ça s'appelle la séparation des couches et c'est vieux comme l'informatique

    A+JYT

  5. #85
    Membre éclairé
    Inscrit en
    novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : novembre 2006
    Messages : 336
    Points : 320
    Points
    320

    Par défaut

    Citation Envoyé par sekaijin
    tu ne fais aucun echo en cours de route tu construit ta sortie dans un buffer et tu ne fais qu'un seul et unique print ou echo

    tu n'auras donc pas à te poser la question des perfs sur les différentes façon de faire un echo.

    de plus si aulieu de construire une chaine de caractère qui contient le HTML à générer tu construit un arbre (objet ou array) contenant les élément à afficher

    tu peux produire à la fin un format totalement différent de celui-ci au quel tu pensais au départ sans modifier ton programme.

    enfin si tu trouve que ton script à une fonction que tu peux réutiliser ailleur il devient simple d'en faire une fonction

    et pour finir qi pendant l'utilisation de ton script on relève un pb il est facile de savoir si c'est un pb d'affichage et donc tu ne touche qu'à l'affichage qui ets à un seul endroit ou si c'est fonctionnel auqu'el ca tu touche la fonction sans risque de casser l'affichage

    ça s'appelle la séparation des couches et c'est vieux comme l'informatique

    A+JYT
    J'acquiesse, et je rajouterais pour Fladnag que non seulement sa méthode de débuggage est ouverte, mais qu'en plus en étant organisé on prévoit de conduire l'erreur (via trigger ou exception) de manière propre, et ce avec une couche logique dédiée à la gesion des données.

  6. #86
    Membre Expert Avatar de Djakisback
    Inscrit en
    février 2005
    Messages
    1 971
    Détails du profil
    Informations forums :
    Inscription : février 2005
    Messages : 1 971
    Points : 1 926
    Points
    1 926

    Par défaut

    Si t'as une fonction displayX(), est-ce qu'il y a un intérêt de créer une variable supplémentaire dans celle-ci plutôt que d'écrire directement sur la sortie ?

  7. #87
    Membre chevronné
    Étudiant
    Inscrit en
    septembre 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 20

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2006
    Messages : 515
    Points : 773
    Points
    773

    Par défaut

    Avec une variable, on fait ce qu'on veut. On peut par exemple décider d'enregistrer le résultat dans un fichier au lieu de l'afficher et ce en changeant juste l'instruction finale.

  8. #88
    Expert Confirmé Sénior
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    juillet 2004
    Messages
    2 994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2004
    Messages : 2 994
    Points : 6 085
    Points
    6 085

    Par défaut

    J'ai eu le cas ressemement
    j'avais une page qui retournais un ensemble d'info à l'utilisateur
    quelqu'un ma demandé si on pouvais avoir la même chosesous forme de service Web

    au lieu de retrourner du HTML je retourne du XML (SOAP)
    Je n'ai touché à aucune ligne de code seul le formatage à été impacté

    A+JYT

  9. #89
    Membre Expert

    Homme Profil pro
    Inscrit en
    janvier 2004
    Messages
    1 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : janvier 2004
    Messages : 1 244
    Points : 1 352
    Points
    1 352

    Par défaut

    je me fais l'avocat du diable (je sais, c'est pas bien ;o) mais si on a un script bourré d'"echo" partout, rien n'empeche d'avoir :

    Code :
    1
    2
    3
    4
    5
    ob_start();
    ... // script tout pourri avec des echo
    $sortie=ob_get_contents();
    ob_end_clean();
    // faire ce qu'on veux avec $sortie
    bon evidemment c'est a eviter quand on peux faire autrement ;o)

  10. #90
    Invité régulier
    Inscrit en
    avril 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : avril 2007
    Messages : 9
    Points : 9
    Points
    9

    Par défaut

    Bonjour,

    Quelle est la bonne arborescence pour un projet/site en php ?
    histoire de séparer les class, les includes, les pages, les images ? (ainsi que les scripts JS, CSS et autres)


    Et dans un script, lorsque qu'on a accède plusieurs fois à $_POST['mail'] par exemple, vaut il mieux l'enregistrer dans une variable ( $mail = $_POST['mail']; ) ou peut on a chaque fois faire appel à $_POST['mail'] tout au long de la page, sans augmenter le temps d'exécution, les ressources consommer, etc...

    Merci

  11. #91
    Expert Confirmé Sénior
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    juillet 2004
    Messages
    2 994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2004
    Messages : 2 994
    Points : 6 085
    Points
    6 085

    Par défaut

    Citation Envoyé par Fladnag
    je me fais l'avocat du diable (je sais, c'est pas bien ;o) mais si on a un script bourré d'"echo" partout, rien n'empeche d'avoir :

    Code :
    1
    2
    3
    4
    5
    ob_start();
    ... // script tout pourri avec des echo
    $sortie=ob_get_contents();
    ob_end_clean();
    // faire ce qu'on veux avec $sortie
    bon evidemment c'est a eviter quand on peux faire autrement ;o)
    Oui mais pourquoi faire sale quand si on y pense dès le début on peu faire propre

    attention il faut dans ce cas là penser qu'il y a peut-être déjà un truc crade avec ob_start et donc penser à Gérer plusieurs buffer il faut donc écrire des callback approprié pour gérer correctement les imbrications de ob_start

    du coup les perf en prennent un grand coup car non seulement on utilise des echo plus couteux que des affectation de chaines pour les dérouter dans ob_start qui lui même utilise de collback pour faire l'affectation

    c'est tout de même beaucoup plus simple de faire des affectation d'une variable

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    function &makeTop($mesparams) {
       ...
       $top->title = 'mon titre';
       $top->soustitle = 'mon sous titre';
       return $top;
    }
     
    function &makeUser($mesparams) {
       ...
       $user->name = $mesparams['nom'];
       $user->profile = 'Administrateur';
       return $user;
    }
    ...
     
    var $outBuffer = new stdClass();
    $outBuffer->entete = makeTop($mesparams);
    $outBuffer->contenu = ...
    $outBuffer->contenu->utilisateur  = makeUser($mesparams);
     
    displayHasHTML($outBuffer);
    C'est simple est efficace pourquoi se casser la tête
    si tu as une modif d'affichage elle est obligatoirement dans la fonction Display
    si tu as une modif de traitement elle est obligatoirement dans la fonction idoine

    A+JYT

  12. #92
    Membre Expert Avatar de Djakisback
    Inscrit en
    février 2005
    Messages
    1 971
    Détails du profil
    Informations forums :
    Inscription : février 2005
    Messages : 1 971
    Points : 1 926
    Points
    1 926

    Par défaut

    Le MVC c'est bien pour la maintenance mais moins pour les perfs ^^ La séparation peut tout du moins être faite à un autre niveau, sans buffer :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class User
    setParams();
    getSqlDatas();
     
    class GUser extends User
    toHTML() {
    echo '<h1>'.$this->name.'</h1>';
    }
    toXML() {
    echo '<user><name>'.$this->name.'</name></user>';
    }
    Ca revient au même, en plus rapide, à mon avis.


    Pour ce qui est de l'utilisation des tableaux $_POST etc. si tu copies ta valeur dans une autre variable tu ne sais plus d'où elle vient alors qu'en utilisant $_POST['mail'] c'est lisible tout de suite. Après ca dépend si tu la passes dans une méthode d'objet, ca va un peu à l'encontre du principe d'encapsulation d'utiliser des globales. Tu peux aussi utiliser des préfixes pour savoir si tes données ont été vérifiées/cleanées mais en PHP la question se posent moins étant donné que les variables externes sont dans des tableaux $_POST, $_GET, etc (donc tu sais justement que les valeurs sont pas clean tant que tu les prends dans les tableau).
    Pour ce qui est de l'arbo personnellement je fais au plus simple :

    css
    --layout.css
    --text.css
    --classes
    ----user.css
    inc
    classes
    -- user.class.php
    js
    img
    etc.

    avec des htaccess dans les rép accessibles uniquement par PHP

  13. #93
    Inscrit Avatar de is_null
    Profil pro
    Djangonaute Linuxien
    Inscrit en
    octobre 2006
    Messages
    642
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations professionnelles :
    Activité : Djangonaute Linuxien

    Informations forums :
    Inscription : octobre 2006
    Messages : 642
    Points : 799
    Points
    799

    Par défaut

    Ne pas dépasser 76 caractères par ligne : pensez à ceux qui ont de petits terminaux.
    Documentez votre code (phpDocumentor).
    Blog / Github / StackOverflow

    Citation Envoyé par C.A.R. Hoare, The 1980 ACM Turing Award Lecture
    There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.”
    More great quotes - RIP Uriel

  14. #94
    Membre chevronné
    Étudiant
    Inscrit en
    septembre 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 20

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2006
    Messages : 515
    Points : 773
    Points
    773

    Par défaut

    Citation Envoyé par Shinuza
    Faux.
    Utilisé avec avec des virgules echo se comporte comme une fonction, et reçoit ainsi plusieurs paramètres qui sont envoyés au tampon de sortie sous la forme d'une seule chaine.
    Avec des points on crée autant d'objets en mémoire que de littéraux.
    Penchons-nous plus précisément sur le problème.

    Comment echo peut-il envoyer plusieurs arguments sur la sortie ?
    Les seules solutions sont utiliser la concaténation (or, si utiliser des virgules ou des points revenaient au même, ça se saurait) ou s'appeler lui-même plusieurs fois de suite.

    Conclusion : utiliser echo avec la virgule revient bien à appeler echo plusieurs fois de suite.

  15. #95
    Membre chevronné Avatar de Korko Fain
    Étudiant
    Inscrit en
    août 2005
    Messages
    632
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2005
    Messages : 632
    Points : 625
    Points
    625

    Par défaut

    Nimporte quoi mdr.
    Soit tu fais la concaténation en php
    Code :
    echo('tralala' . 'trucmachin' . 'tralalatsointsoin');
    ou tu demande à php de le faire en c
    Code :
    echo('tralala', 'trucmachin', 'tralalatsointsoin');

  16. #96
    Membre chevronné
    Étudiant
    Inscrit en
    septembre 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 20

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2006
    Messages : 515
    Points : 773
    Points
    773

    Par défaut

    Au final, la concaténation est de toutes façons faite en C, non ?

    De plus, il y a des cas ou le point est plus rapide que la virgule, je ne pense donc pas que le niveau où se fait la concaténation soit si elle existe la seule différence.

  17. #97
    Inscrit Avatar de is_null
    Profil pro
    Djangonaute Linuxien
    Inscrit en
    octobre 2006
    Messages
    642
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations professionnelles :
    Activité : Djangonaute Linuxien

    Informations forums :
    Inscription : octobre 2006
    Messages : 642
    Points : 799
    Points
    799

    Par défaut

    Je ne pense pas que l'usage direct de echo soit une bonne pratique. Je pense qu'il faut utiliser un systême de templates.
    Blog / Github / StackOverflow

    Citation Envoyé par C.A.R. Hoare, The 1980 ACM Turing Award Lecture
    There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.”
    More great quotes - RIP Uriel

  18. #98
    Membre chevronné Avatar de Korko Fain
    Étudiant
    Inscrit en
    août 2005
    Messages
    632
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2005
    Messages : 632
    Points : 625
    Points
    625

    Par défaut

    Là n'est pas la question is_null ^^

  19. #99
    Membre Expert
    Profil pro
    Inscrit en
    janvier 2007
    Messages
    1 452
    Détails du profil
    Informations personnelles :
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : janvier 2007
    Messages : 1 452
    Points : 1 789
    Points
    1 789

    Par défaut

    Citation Envoyé par Korko Fain
    Là n'est pas la question is_null ^^
    En même temps débattre sur le point ou la virgule ce n'est pas vraiment une question de grande importance.
    Surtout que c'est le genre qui ont des chances d'être modifiée par l'équipe de php afin de l'améliorer....

    Ce post devrait plutot débattre de technique,choix de conception, d'écriture un peu plus universel à toutes les versions de PHP plutot qu'à quelques broutilles...

    Une question qui me trotte dans la tête depuis un bout de temps et à laquelle je ne trouve pas de réponse absolue.

    Pour ceux qui développe en OO, lorsque vous concevez vos classes d'accès aux données.
    Celles-ci respectent t'elle précisèment la structure de votre base de données (une classe = une table), ou bien cassez vous la structure de votre base de données lors du passage en objet (une classe peut piocher dans plusieurs tables) ?

    Perso j'ai opté pour la première méthode, cependant cela n'est pas toujours adapté car ce que l'on peut faire en une requete via la bdd, je le fait en N requetes en utilisant le modèle objet....
    En même temps j'ai la hantise d'éparpiller mon modéle de données dans mon modèle objet car lors d'une mise à jour cela imposera de vérifier plus de codes, et certaines portions passeront surement à la trappe.
    Ce qui in fine créera de nouveaux bugs...

    Vous concernant quels choix avait vous fait ?

    bye

  20. #100
    Membre chevronné Avatar de Korko Fain
    Étudiant
    Inscrit en
    août 2005
    Messages
    632
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2005
    Messages : 632
    Points : 625
    Points
    625

    Par défaut

    Personnellement, une classe = un objet précis. Une table n'est pas forcément égal à un objet car un objet peut avoir plusieurs attributs qui sont répartis dans plusieurs tables dues aux multiplicités.

    Et ma classe ne "pioche" pas dans les bases car elle n'y accede pas, elle demande à une classe DB les informations et elle seule connait la syntaxe de mes tables et communique avec la base.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •