Précédent   Forum du club des développeurs et IT Pro > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Actualité déjà publiée
 
Outils de la discussion
Publicité
'
Vieux 21/02/2007, 12h27   #41
Sub0
Expert Confirmé
 
Avatar de Sub0
 
Homme
Développeur Web
Inscription : décembre 2002
Messages : 3 489
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 40

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2002
Messages : 3 489
Points : 3 935
Points : 3 935
Envoyer un message via MSN à Sub0 Envoyer un message via Skype™ à Sub0
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.
Sub0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2007, 14h08   #42
wamania
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 683
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 683
Points : 1 034
Points : 1 034
Citation:
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

Lithium : ORM ActiveRecord PHP5 extrêmement léger
wamania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2007, 14h21   #43
Sub0
Expert Confirmé
 
Avatar de Sub0
 
Homme
Développeur Web
Inscription : décembre 2002
Messages : 3 489
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 40

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2002
Messages : 3 489
Points : 3 935
Points : 3 935
Envoyer un message via MSN à Sub0 Envoyer un message via Skype™ à Sub0
Merci wamania. C'est à présent compris.
Sub0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2007, 08h50   #44
PascalEmd
Invité de passage
 
Inscription : novembre 2006
Messages : 4
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 4
Points : 4
Points : 4
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 :
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,...);
PascalEmd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2007, 18h03   #45
stryder
 
Inscription : février 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 8
Points : -3
Points : -3
Citation:
- 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 ?
stryder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2007, 18h42   #46
goodpz
Membre éprouvé
 
Avatar de goodpz
 
Inscription : février 2007
Messages : 475
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 475
Points : 474
Points : 474
Citation:
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.
goodpz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2007, 20h43   #47
kaymak
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
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.
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2007, 21h31   #48
sekaijin
Expert Confirmé Sénior
 
Avatar de sekaijin
 
Homme
Urbaniste
Inscription : juillet 2004
Messages : 2 161
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 49
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 2 161
Points : 5 146
Points : 5 146
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
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2007, 09h08   #49
berceker united
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 3 031
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 3 031
Points : 3 997
Points : 3 997
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 !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2007, 10h53   #50
sekaijin
Expert Confirmé Sénior
 
Avatar de sekaijin
 
Homme
Urbaniste
Inscription : juillet 2004
Messages : 2 161
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 49
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 2 161
Points : 5 146
Points : 5 146
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
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2007, 11h08   #51
sekaijin
Expert Confirmé Sénior
 
Avatar de sekaijin
 
Homme
Urbaniste
Inscription : juillet 2004
Messages : 2 161
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 49
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 2 161
Points : 5 146
Points : 5 146
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 :
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 :
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
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2007, 11h20   #52
sekaijin
Expert Confirmé Sénior
 
Avatar de sekaijin
 
Homme
Urbaniste
Inscription : juillet 2004
Messages : 2 161
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 49
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 2 161
Points : 5 146
Points : 5 146
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
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2007, 11h42   #53
sekaijin
Expert Confirmé Sénior
 
Avatar de sekaijin
 
Homme
Urbaniste
Inscription : juillet 2004
Messages : 2 161
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 49
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 2 161
Points : 5 146
Points : 5 146
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 :
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à
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2007, 02h24   #54
Shinuza
Membre éclairé
 
Inscription : novembre 2006
Messages : 336
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 336
Points : 320
Points : 320
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 :
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 :
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
Shinuza est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2007, 10h20   #55
DevloNewb'
Futur Membre du Club
 
Inscription : décembre 2005
Messages : 69
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 69
Points : 19
Points : 19
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)
DevloNewb' est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2007, 10h43   #56
haltabush
Membre émérite
 
Avatar de haltabush
 
Développeur Web
Inscription : avril 2005
Messages : 726
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 726
Points : 822
Points : 822
Un code récupéré 2 ou 3 topics plus bas, de Mr.N :
Code :
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>';
?>
haltabush est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2007, 10h54   #57
DevloNewb'
Futur Membre du Club
 
Inscription : décembre 2005
Messages : 69
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 69
Points : 19
Points : 19
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
DevloNewb' est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2007, 11h22   #58
haltabush
Membre émérite
 
Avatar de haltabush
 
Développeur Web
Inscription : avril 2005
Messages : 726
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 726
Points : 822
Points : 822
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.
haltabush est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2007, 14h10   #59
DevloNewb'
Futur Membre du Club
 
Inscription : décembre 2005
Messages : 69
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 69
Points : 19
Points : 19
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...
DevloNewb' est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2007, 18h29   #60
berceker united
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 3 031
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 3 031
Points : 3 997
Points : 3 997
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 !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Actualité déjà publiée
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h13.


 
 
 
 
Partenaires

Hébergement Web