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

Langage PHP Discussion :

Comment bien programmer en PHP ? [Débat]


Sujet :

Langage PHP

  1. #41
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Merci wamania pour ces éclaircissements.
    Ok, pour résumé, si j'ai bien saisi, on doit utiliser ce concept lorsqu'il ya beaucoups d'algo (méthodes), n'est-ce pas ? Ou bien c'est à utiliser dans tous les cas, le plus possible ? Et dernière question : Ya-t-il des inconvéniants dans le "strategy" ? Merci d'avance.
    De retour parmis vous après 10 ans!!

  2. #42
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    on doit utiliser ce concept lorsqu'il ya beaucoups d'algo (méthodes), n'est-ce pas ? Ou bien c'est à utiliser dans tous les cas, le plus possible ?
    Il faut l'utiliser quand ça se justifie^^
    Ok, c'est pas précis, mais en gros, et ça répondra à ta question sur les inconvénients, c'est une technique qd même relativement lourde et qui doit être pensée AVANT de coder.
    ça peut être tout de même utilisé même pour de petits projets, du moment qu'on souhaite faire un choix à la volée entre plusieurs solutions comparables.
    Il faut clairement ça soit comparable, c'est à dire en POO implémenter la même interface au moins.
    Par exemple, dans le lien que tu files, l'auteur fait un choix entre des pays, avec langue, monnaie... qui sont en tout point comparables : à un mot, TOUS les pays auront une traduction dans leurs langues, à un prix, TOUS les pays auront un prix dans leurs monnaies....
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  3. #43
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Merci wamania. C'est à présent compris.
    De retour parmis vous après 10 ans!!

  4. #44
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par wamania
    L'ajout d'un nouvel algo devient très facile et rapide, plus besoin de scanner le code à la recherche de tous les appels aux fonctions.
    L'utilisation de call_user_func_array ne permet elle pas de simplifier la version non POO ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function phase1_algo1 {
    }
    function phase2_algo1 {
    }
    function phase1_algo2 {
    }
    function phase2_algo2 {
    }
     
    call_user_func_array('phase1_'.$algo,...);
    call_user_func_array('phase2_'.$algo,...);

  5. #45
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 8
    Points : 0
    Points
    0
    Par défaut
    - Séparer le contenu du contenant. Quoi de plus beau qu'une page ne contenant QUE du PHP?
    Comment séparer le HTML du PHP ? Faut il écrire tout le HTML via des echo ?

  6. #46
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    donc quelle est la bonne méthode pour inclure le HTML ?
    Il n'y a pas de bonne méthode universellement reconnue.
    Toutes les méthodes possibles sont bonnes ou mauvaises à un moment donné pour telle ou telle application...

    Vouloir séparer à tout pris le html du php n'est pas le vrai problème. Le problème structurel qui se cache derrière c'est de séparer, dans une application, la partie présentation de la partie métier. Et ceci est valable pour tous les types d'applications qui ont un rendu visuel, que ce soit web, desktop ou autre.

  7. #47
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    Citation Envoyé par goodpz
    Il n'y a pas de bonne méthode universellement reconnue.
    Toutes les méthodes possibles sont bonnes ou mauvaises à un moment donné pour telle ou telle application...

    Vouloir séparer à tout pris le html du php n'est pas le vrai problème. Le problème structurel qui se cache derrière c'est de séparer, dans une application, la partie présentation de la partie métier. Et ceci est valable pour tous les types d'applications qui ont un rendu visuel, que ce soit web, desktop ou autre.
    Exactement. Et c'est à cette fin que sont apparu smarty and co. L'idée est d'avoir un fichier d'intialisation qui va, en fonction des règles métier, créer les variables attendu par la vue. La vue elle ne contient aucune logique métier. Elle ne fait qu'utiliser les valeurs pré alablement crées pour les présenter vers une page web, une sortie console ect.

    Apparté sur Smarty, certain aime, d'autre déteste (comme moi), mais quel que soit l'avis. Au final il n'apporte qu'une plus grande rigueur et structure au code. Et on doit pouvoir, en tout cas je le fais, en faire autant en restant en PHP pur. Le tout étant de se l'imposer.

  8. #48
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Citation Envoyé par Sub0
    Je n'arrive pas à assimiler ce concept... Utiliser la POO pour les bases de données, ou par exemple réaliser une classe mail, ok. Mais ...
    Pour l'instant, je n'y vois aucun intérêt à utiliser ce concept. Expliquez moi s'il vous plait
    J'ai un petit jeu de classe qui fait permettent de manipuler une base de donnée
    je crée une table client avec ses champs
    je crée une classe Client qui représente un client et toute les méthode que je peut faire sur mon client je fais dériver cette classe d'une de mon package appelé MapObject
    je crée une classe ClientTable qui dérive de MapTable sans ajouter une seule méthode à cette classe

    je peux lire et écrire dans ma table rechercher par Id ou tout autre critère je peux suprimer des éléments

    mieux à chaquefois que je pioche un élément dans ma table il m'est retourné un objet de la classe client je peux donc lui applique ses méthodes
    je peut le modifier et l'enregistrer directement

    je peux demander un client vide pour le préparer et l'enregister.
    je peux invoquer les jointure de ma base pour retrouver les facture de mon client
    etc.

    et tout ça sans jamais écrire une ligne de SQL

    mais je peux aller plus loin mes client sont des personnes et Je peux faire dériver mon Client de Personne pour bénéficier des méthode de la classe Personne

    Je peux aller encore plus loin et définir une entité vue comme une classe dont les données sont stockées dans un agrégat de tables

    et je peux biensur surcharger n'importe quelle méthode des classe Table ou Object dérivant de MapTable et MapObject pour optimiser ou ajouter des fonction propre à mon aplication.

    du coup j'ai une couche DAO qui ne fait que de l'accès au donnée
    une couche Maping qui sépare cette couche de la couche métier
    une couche métier qui décrit les comportement de entité manipulée par l'application
    et une couche applicative qui ne sais absolument pas comment sont traité ls donnée ni où elle sont stokée.

    Je peux en très peut de temps passer de MySQL à Oracle ou à PostgreSQL
    Je peux redéfinir le modèle phisique sans remettre en cause toute l'application. (il ne faut redéfinir que le mapping)

    Je peux ajouter de nouvelle clase offrant de nouvelle fonctionnalité sans toucher à la base.

    ETC.
    Il y a tant de possibilité qui s'offre alors que ce serait trop long à décrire.

    la principale est l'indémendance des couches logicielles donc plus facile à maintenir et à faire évoluer
    plus facile à porter
    plus facile à réutiliser
    A+JYT

  9. #49
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    En fait, les choses doit se faire dans l'autre sens. Lors de l'analyse d'un projet il faut commencer par [...] . Arrivé au diagramme de classe final c'est de là qu'il commencer à penser au table SQL car les tables sql représente une instance d'un objet. C'est à un dire l'objet à moment T. C'est pas l'objet qui doit représenter un table.
    Mais ceci est dans le meilleur des mondes. Je trouvais plus judicieux de commencer par les classes que les tables. De cette manière je gagne du temps et la structure des tables deviennent plus logique et optimisées.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  10. #50
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Mon approche n'est pas tout à fais celle-là

    Je fais deux analyses en parallèles.
    Je fais une conception orienté objet de mon application sans me soucier de la façon dont seront stockés les données. j'obtiens alors un diagramme de classes qui corresponds au besoin de l'application.

    à côté de ça j'analyse la demande pour déterminer quels sont les éléments à stocker dans ma base et sous quelle forme. à quel genre de manipulation il seront soumis. une table don les données ne change quasiment pas (données de références par exemple) n'a pas à être stockée de la même façon que des données très dynamiques. j'obtiens alors un modèle de données normalisé et optimal.

    il n'y a pas obligatoirement adéquation entre classe et table. il peux y avoir des tables qui n'apparaissent pas en tant que telle dans le diagramme de classe de même il peut y avoir des classe qui ne correspondent pas à une table.

    à cette étape se pose la question de fond Dois-je dé-normaliser ma base pour
    quelle corresponde plus à mes Classes ? Dois-Je réviser mon diagramme pour le mettre en adéquation avec la base ? Et enfin Puis-je garder les deux ainsi ?

    par exemple je manipule des produits, des services, des abonnements. Fonctionnellement ces éléments ont des comportements très différents et n'ont pas de méthodes communes mais ils ont tous un nom, un cout logiquement je me retrouve avec trois Classes qui n'héritent pas nécessairement d'une même classe (un taxe à aussi un nom et un cout) mais côté base de données les manipulation que je vais faire dessus les produits, les services, les abonnements sont identiques tout comme le sont les données. Je vais donc avoir idéalement une seule table pour faire la différence je mettrais un champs qui indique le type.

    J'ai donc devant moi trois solution
    - Je remplace ma table par trois et j'ai une relation 1-1 entre table et classe (ça facilite la vie)
    - Je Fais une seule Classe avec des méthodes pour traiter les différences (ça optimise la base)
    - Je garde les deux et je fais correspondre les trois classe avec la même table en fixant le type pour chaque classe (J'ai une indépendance entre la couche métier, la classe, et la couche DAO la table)

    Chaque solution à un cout et c'est à la conception qu'il faut faire le choix.

    de façon générale j'ai une Classe qui est en face d'une table principale liée avec plusieurs table de référence et de liaison.

    La classe facture et en liaison avec la table facture, remise_facture (relation NM avec les remises), et facture_items (relation NM des éléments facturés)

    avec l'expérience on voit apparaitre dans l'analyse des entités manipulées par l'application qui vont se décliner sous forme d'un groupe de classes ces mêmes entités seront représenter en base par un ensemble de tables, sans pour autant avoir d'adéquation un à un

    tout l'avantage d'utiliser un modèle objet pour l'accès au donnée est que justement il permet de cacher à l'application la façon dont les données sont stocké.
    il deviens possible de déplacer une ou toute partie de données vers d'autre mode d'enregistrements sans perturber l'application. seule l'interface DAO est impacter.

    Par exemple des données sur du personnel sotcké en base pour le besoin d'un application qui sont remplacé par un accès à l'annuaire de l'entreprise.
    Un membre du personnel reste un membre du personnel, ce qu'en fait l'appli ne change pas mais les donnée ne sont plus dans la base.

    A+JYT

  11. #51
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Citation Envoyé par Thuliad
    A la place des variables globales, je préfère utiliser des variables statiques de classe.
    Ce qui manque surtout en php c'est les espaces de noms...

    Par contre un conseil pour tous : arrêtez d'utiliser des post-incrémentations quand vous pouvez utiliser des pré-incrémentations, c'est valable pour tous les langages.

    a++ équivaudrait à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    b = a;
    a = a +1;
    return b;
    et ++a :
    (valable aussi pour les décrémentations évidemment)
    ce n'est pas tout à fait ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $b = $tab[$a++];
    $b = $tab[++$a];
    dans le premier cas
    on calcule la position de l'élément du tableau en prenant la valeur de a et l'adresse de $tab on copie la valeur de cet élément dans b et on incrémenta a
    dans le deuxième on incrémente a
    puis on calcule la position de l'élément du tableau en prenant la valeur de a et l'adresse de $tab on copie la valeur de cet élément dans b

    à aucun moment on ne passe par une étape intermédiaire.
    tout les compilateur savent optimiser ce genre de chose.

    prend gcc compile ce genre de code et passe le au débugeur pas à pas en binaire
    tu va voir qu'il n'y a que l'ordre qui change. le compilateur va simplement optimiser le moment ou il fait l'incrément

    une instruction n'est pas une fonction et ne s'exécute pas comme tel

    encore une fois l'optimisation des perfs ne se fait pas sur ces éléments comme cela mais sur une conception plus globale. les compilateurs font aujourd'hui des optimisation telles que souvent même avec des algo qui nous semble bien différents ils pondent le même code.


    A+JYT

  12. #52
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Citation Envoyé par stryder
    Comment séparer le HTML du PHP ? Faut il écrire tout le HTML via des echo ?
    je part toujours du principe que je ne sais pas quel format attends mon client.
    donc mon application ne produit aucun élément sur la sortie. pas de HTML pas de print pas de echo

    en générale mon application construit une structure de donné correspondant à ce que le client demande.

    d'un autre côté j'ai un code (par exemple un système de template, DOM, etc)
    qui prends cette structure et la mets en forme comme le veut le client.

    dans mes application une même fonctionnalité peut être accédé par différent client
    un navigateur => je formate la structure en HTML (XHTML)
    un Javascript => je formate en JSON ou XML suivant la demande
    un script php => Je sérialise en php
    un client SOAP => j'enveloppe ma structure.

    Je peux ainsi multiplier les format à l'infini WAP IMODE VCAL VCARD PDF SVG VML OpenDoc Excel...

    Jamais de HTML de echo ou de print dans le PHP
    Jamais de PHP dans les documents de sortie

    A+JYT

  13. #53
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Citation Envoyé par NoisetteProd
    C'est vraiment très interessant, et tu as une manière très clair de présenter les choses, je trouve. Peux tu nous donner des exemples complet de code pour aller encore un peu plus loin ??
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    <?php
    //chargement de la librarie
    require 'Base.class.php';
    // maclasse que je peux adaper au mieux pour mon appli
    class Boutique
     extends MapObject {
       var $bou_id;
       var $bou_nom;
       var $bou_adresse;
       var $bou_code_postal;
       var $bou_ville;
       var $bou_complement;
       var $bou_telephone;
       var $bou_ordre;
       var $bou_valide;
     
       function Boutique(&$table, $obj=NULL) {
          parent::MapObject(&$table, $obj);
       }
     
       function maMethodeAMoi($param) {
          ...
       }
    }
     
    //la classe représentant l'espace de stockage des objets de la classe précédente
    class BoutiqueTable
     extends MapTable {
       function BoutiqueTable($obj=NULL, &$DataBase, $ClassName="Boutique") {
          parent::MapTable($ClassName, 'bou_id', $obj, $DataBase, 'boutique');
       }
    }
     
    //création de l'objet base (la constante CFG_DB_TYPE désigne le moter au utiliser MySQL, PostgreSQL, Oracle, etc.)
    $db = new Base(CFG_DB_SERVER, CFG_DB_PORT, CFG_DB_DATABASE, CFG_DB_USERNAME, CFG_DB_PASSWORD, CFG_DB_TYPE);
    //positionner le fichier de log entraine le traçage dans le fichier de toutes les requêtes
    $db->setLogs(APP_SYSDIR_LOGS . "database.log");
    //connexion à la base
    $db->connect();
    //récupération de la table des boutique (pas les données)
    $boutiques = $db->getMapTable('BoutiqueTable');
     
    //recherche d'une boutique par son ID l'objet retourné est de la classe Boutique
    $aBoutique = $boutiques->getMapObjectById(25);
    if ($aBoutique) {
       echo $aBoutique->bou_nom;
       print_r($aBoutique->maMethodeAMoi('un parametre'));
       $aBoutique->bou_ville = 'Lyon';
       //INSERT ou UPDATE automatique en fonction des données de l'objet (il existe les methode add et update pour optimiser)
       $aBoutique->save();
    }
    $aBoutique = $boutiques->getMapObjectById(26);
    if ($aBoutique) {
       $aBoutique->delete();
    }
     
    while ($aBoutique = $boutiques->next()) {
      $aBoutique->maMethodeAMoi('un parametre');
    }
     
    //supprime tous les élément répondant à la condition key et la clef primaire de la table (voir le constructeur)
    $boutiques->remove($boutiques->key.'='.12);
     
    //création d'une instance de Boutique associé à la table (garde la laison avec la table et la base);
    //newMapObject prend en paramettre un tableau ou un objet ou nul
    $aBoutique = $boutiques->newMapObject(array(
       'bou_nom' => 'Les ormes',
       'bou_adresse' => '18 rue belleville',
       'bou_code_postal' => '32150',
       'bou_ville' => 'Leognac',
       'bou_complement' => 'BP 125',
       'bou_telephone' => '0502010304'
       'bou_ordre' => 25,
       'Un champs parasite' => 'ce champs ne faisant pas partit de la table ne sera pas enregistré',
       'bou_valide' => true));
    $aBoutique->save();
    //Il y a eut un add $aBoutique->add(); car l'élément n'étais pas en base la clef est mise à jour
    echo $aBoutique->bou_id;
     
    //vider la table (remove sans condition)
    $boutiques->remove();
     
    //fermer la connexion
    $db->disconnect();
    Voilà

  14. #54
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Points : 374
    Points
    374
    Par défaut
    Citation Envoyé par |PaRa-BoL
    Il vaut mieux toujours privilégier l'optimisation.

    Par exemple les chaines de caractères avec des simples quotes et non pas des doubles. (Ne pas avoir la fleme de concaténer les variables). Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo 'Bonjour, '. $pseudo . ' Ca va ?';
    Biensûr bien identer et commenter.

    Separer au maximum les fichiers selons leur context et non pas faire un fichier de function tout bordélique.
    Etonnant que personne n'ai corrigé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'Bonjour,' , $pseudo , 'Ca va?';
    Echo est une instruction, de ce fait le fait d'utiliser des points revient à avoir deux fois echo pour afficher la chaine séparée de la variable. Alors que la virgule permet de tout faire d'un coup.

    Mes méthodes :

    ->Utilisation d'une classe qui gère les différents SGBD de manière transparente
    ->Utilisation de mysql_real_escape_string() au lieu de addslashes()
    ->Utilisation d'une classe par vue.
    ->Convention de nommage propre ( et malheuresement pas toujours respectées par les autres dev)
    ->Organisation de l'arborescence
    ->Séparation du code php et html au maximum
    ->Commentaire plus versionning
    ->Utilisation de POO au maximum

  15. #55
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 69
    Points : 47
    Points
    47
    Par défaut
    Bonjour,

    Petite question : comment faites-vous pour tester la vitesse d'exécution de vos pages ? (y'a-t-il un plug firefox qui permet de faire ça, je n'ai rien vu dans webdevelopper)

  16. #56
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    Un code récupéré 2 ou 3 topics plus bas, de Mr.N :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    $time_start = microtime_float();
     
    $res = mysql_query('SELECT * FROM formulaires WHERE ....');
     
    $time_end = microtime_float();
    echo '<b>La requête a pris '. $time_end - $time_start .' secondes</b>';
    ?>

  17. #57
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 69
    Points : 47
    Points
    47
    Par défaut
    merci, à propos de requêtes MySQL, j'aimerais avoir votre avis sur un truc: c'est quoi le mieux point de vue performance, faire deux requêtes, ou une seule plus complexe (contenant les deux) ?

    au pire je testerais moi-même avec microtime

  18. #58
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    Une requête plus complexe est généralement beaucoup (beaucoup, beaucoup) plus rapide.
    Après, il ne faut pas non plus faire n'importe quoi.

  19. #59
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 69
    Points : 47
    Points
    47
    Par défaut
    Non, mais il m'arrive fréquemment d'avoir des requêtes avec 3 joitures, un WHERE avec (NOT) IN + requête imbriquée + ORDER BY... par exemple

    des requêtes que je pourrais simplifier syntaxiquement parlant en utilisant les méthodes de mes classes mais qui augmenteraient le nombre de requêtes...

  20. #60
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    Maintenant, j'ai pris la décision de ne plus placer de select dans mon code source php. Je fais appelle que à des fonctions SQL Qui lui gère le retour d'information. Dans d'autre cas j'utilise des requêtes préparées
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

Discussions similaires

  1. Comment commencer à programmer avec PHP, SQL-Server 2000
    Par DevLib dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/05/2012, 11h51
  2. Comment bien programmer web en java?
    Par lovelace dans le forum Développement Web en Java
    Réponses: 11
    Dernier message: 19/10/2008, 00h40
  3. Comment bien commencer la Programmation
    Par Le_Faya dans le forum Débuter
    Réponses: 6
    Dernier message: 01/12/2006, 18h39
  4. Comment bien programmer en C ?
    Par lastrecrue dans le forum C
    Réponses: 14
    Dernier message: 12/07/2006, 12h44

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