Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Les meilleurs débats et sondages PHP : langage / outils / scripts etc.

Le , par Community Management

0PARTAGES

1  0 
Bonjour

ma question et la suivante :

Comment bien programmer en PHP ?

Donc si vous avez des conseils, des truc à utiliser/éviter et d'autres choses.

Par exemple :
Code le plus court :
Code : Sélectionner tout
1
2
3
4
for ($i=0; $i<count($array); $i++)
{
  echo $array[$i];
}
Code le plus rapide :
Code : Sélectionner tout
1
2
3
4
5
$count = count($array);
for ($i=0; $i<$count; $i++)
{
  echo $array[$i];
}
Merci d'avance

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de N1bus
Rédacteur/Modérateur https://www.developpez.com
Le 20/01/2007 à 18:14
Bonjour,

pour ma part :

- Bien indenter le code pour une meilleure lisibilité
- Bien commenter le code , même si ça prend du temps. Tu seras content dans 6 mois d'avoir pris le temps de commenter ton code . . .
2  0 
Avatar de marcha
Rédacteur https://www.developpez.com
Le 24/01/2007 à 16:32
Citation Envoyé par Sub0
Pourrais-tu me dire pourquoi tu n'y crois plus ?
J'ai cru qu'il fallait toujours optimiser son code, et je n'y crois plus parce
qu'une optimisation n'est nécessaire que si il y a un besoin réel et pas
juste hypothétique.

J'ai souvent pensé qu'un code optimisé était en sois meilleur. Mais il est souvent
moins clair, plus difficile à maintenir, et il arrive qu'il soit remplacé par un nouveau
produit avant même d'avoir atteint ses limites.

Mais il est vrai, que c'est un vrai plaisir d'optimiser son code... mais on devrait le
faire que lorsqu'il s'avère que c'est économiquement nécessaire et pas avant !
2  0 
Avatar de Sub0
Expert confirmé https://www.developpez.com
Le 20/01/2007 à 18:50
Salut!

• Toujours bien mettre en place un algo, voir un cahier des charges bien pensé avant de se plonger dans le code. Pour cette étape, il est important de connaître les règles de sécurité, quelles peuvent être les failles : http://php.developpez.com/faq/?page=securite

• Perso, je sépare bien les "unités" de mon programme, par exemple :
cfg.php // Constante et variable de configuration
bbd.php // Fonctions d'accès à la base de données
func.php // Diverses fonctions, conversion, traitement
mail.php // Fonctions d'envoi de mail
forms.php // Formulaires html de saisie
etc...
J'inclus les unités les unes aux autres avec Require_once().

• J'utilise les tableaux pour les constantes, variables, données... et la commande global pour les intégrer dans mes fonctions. Par exemple, dans le script "cfg.php", tu trouveras :
Code : Sélectionner tout
1
2
3
4
5
6
$cfg['db_server']  = 'localhost';         // Nom du serveur
$cfg['db_name']    = 'mybase';            // Nom de la base
$cfg['db_table']   = 'membres';           // Nom de la table
$cfg['db_login']   = 'root';              // Le login d'accès de la base
$cfg['db_pass']    = '';                  // Le mot de passe de la base
$cfg['linkid']     = '';                  // Handle de la connection
Et dans le script "bdd.php" :
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Require_Once('cfg.php');
Require_Once('func.php');

//============================================================ 
//  CONNECTION A LA BASE DE DONNEES
//============================================================
function OpenBase($first=false){
  global $cfg;

  //----------------------------------------------------------
  // Déjà connecté -> Exit
  //----------------------------------------------------------
  if(!empty($cfg['linkid'])) return true;

  //----------------------------------------------------------
  // Test de connection su serveur
  //----------------------------------------------------------
  if(!$cfg['linkid']=@mysql_connect(
    $cfg['db_server'],
• Je commente bien mon code (mais pas trop) et j'utilise des séparations pour améliorer la lisibilité et structurer le code. Je n'utilise pas de tabulation, que des espaces car d'un éditeur à l'autre, la valeur des tabulations peuvent être différentes et desindenter ton code. Le résultat est assez surprenant parfois.

• J'utilise les simples quotes dans tous les cas, excepté pour encadrer les requêtes SQL où j'utilise les doubles quotes, car avec mon editeur PHP, il est possible de choisir une couleur différente. Ainsi, je repère tout de suite où se trouvent les requêtes SQL.

• J'utilise de péréférence des "echo" pour intégrer du code HTML, CSS ou Javascript dans mes scripts PHP. J'évite de fermer les balises PHP (?> ou sinon, je mets tout le code HTML, CSS ou Javascript dans un autre fichier.

• Bien garder à l'esprit que ton code sera probablement lu par d'autres développeurs.
1  0 
Avatar de cedricgirard
Membre averti https://www.developpez.com
Le 10/09/2008 à 16:03
Très vaste sujet mais
Citation Envoyé par fadex Voir le message
Par exemple :
Code le plus court :
Code : Sélectionner tout
1
2
3
4
for ($i=0; $i<count($array); $i++)
{
  echo $array[$i];
}
Code le plus rapide :
Code : Sélectionner tout
1
2
3
4
5
$count = count($array);
for ($i=0; $i<$count; $i++)
{
  echo $array[$i];
}
Merci d'avance
Je préconise
Code : Sélectionner tout
foreach($array as $valeur) echo $valeur;
C'est plus court, plus lisible qu'un for(), et honnêtement la performance à ce niveau on s'en fiche un peu. Comme disait l'auteur de "le zen de l'optimisation du code", optimise au max mais uniquement là où tu peux mesurer un gain utile.

Par ailleurs je n'ai pas encore lu les 11 pages de réponses, mais pour moi bien programmer en PHP c'est d'abord
- du code concis, lisible, qui fait uniquement ce qui est utile, des variables/fonctions bien nommées, un code que l'on puisse remanier si le besoin se précise ou qu'il change
- des tests unitaires et fonctionnels
- des règles respectées : register_global à off, oubli des parties qui seront désactivées en PHP6 (long array par exemple), éviter les globals
- coder avec l'affichage des erreurs au max et n'en laisser passer aucune
- capter toutes les erreurs qui surviennent sur un site en production et les corriger (ou en tout cas les gérer) au fur et à mesure
1  0 
Avatar de cedricgirard
Membre averti https://www.developpez.com
Le 10/09/2008 à 16:07
Citation Envoyé par Pascal22 Voir le message
S'il est effectivement évident que c'est une bonne pratique d'un point de vue applicatif, en est-ce réellement une d'un point de vue site web (referencement par ex. ) ?
Car si je ne me trompe, plus d'url rewriting (une url unique pour l'acces au serveur)
Je ne vois pas le rapport entre MVC et l'usage d'une URL unique.
Ergonomiquement l'URL unique est une hérésie, surtout maintenant que l'on sait faire des URL qui expriment quelque chose et ne dépendent plus de l'organisation technique du serveur.
1  0 
Avatar de Benjamin Delespierre
Expert éminent https://www.developpez.com
Le 27/06/2011 à 15:30
La solution que j'ai trouvé à ce problème est de désactiver les updates des modules qui marchent parfaitement

Et ce pour 2 raisons:
- C'est vrai, la gestion des plugins et des dépendances dans Eclipse peut devenir une vraie galère
- Une fois qu'on à un environement stable et correctement configuré, on n'a pas forcément envie de se prendre 5 updates par semaine dans les dents.

ça fait deux ans que j'ai pas updaté PDT et je touche du bois
1  0 
Avatar de sekaijin
Expert éminent https://www.developpez.com
Le 03/01/2014 à 20:13
ça n'optimise rien du tout un if avec ou sans accolade c'est le même temp de traitement. les différentes syntaxe de if sont toute identique le compilateur php va générer le même code exécutable.

de façon générale la présence d'accolade ne change pas le temps d'éxécution
en fait la seule différence que peut introduire la présence d'accolades dans du code est la création d'un contexte de portée des variables. soit quelque chose de l'ordre de la micro seconde.

le pire dans tes exemples c'est
Code : Sélectionner tout
return = (empty($val)) ? true : false;
la tu n'optimise absolument rien pire tu introduit du code inutile
Dans ce code tu appelle la fonction empty en lui passant un variable. cette fonction var retourner true ou false.
l'opérateur ternaire va alors évaluer cette valeur et si elle vaut true va retourner la première valeur sion la seconde. celle-ci sera placé dans return.

Alors que
Code : Sélectionner tout
return = empty($val)
la fonction est évaluée et returne true ou false qui est directement placé dans return pas d'évaluation du résulta pas de branchement dans le code généré.

il ne faut pas confondre le code concis et optimisation. souvent un code compact n'est pas le plus optimal.

A+JYT
2  1 
Avatar de Spartacusply
Membre expert https://www.developpez.com
Le 01/12/2014 à 15:48
Étant donné que php est utilisé pour produire des pages webs dynamiques, ne serait-il pas plus judicieux de n'utiliser que du php sur une page ?
Non, il y a plein d'inconvénients à cette méthode, la première étant que tu perds la coloration syntaxique, l'indentation, difficile de savoir si ton HTML est bien formé en un clin d'oeil. Bref, beaucoup plus difficile de décoder ton HTML. Il convient de réserver le php aux zones qui sont vraiment dynamiques.

- Quand c'est un array, je rajoute "_a" au bout du nom de la variable ou du nom de la fonction.
Je préfère privilégier le castage et l’initialisation des variables (qui n'est pourtant pas obligatoire en php) afin de savoir ce que contient ma variable.

Je rajoute des "\n" dans les fonctions d'affichage, afin que le code source de la page soit plus lisible.
Moi je dirais le contraire, ça rend le code source totalement illisible. Je préfère quand même ça :

Code : Sélectionner tout
1
2
3
$html = '<form action="avis.php" method="post" name="avis">
    <label for="pseudo">Pseudo</label>
    <input type="text" name="pseudo" size="106" maxlength="30"><br></form>';
Même si bon comme dis plus haut, c'est loin d'être la meilleure méthode.
1  0 
Avatar de fadex
Membre régulier https://www.developpez.com
Le 22/01/2007 à 10:57
Merci

Donc est ce qu'il y a des normes à suivre, parce que parfois on arrive à des situations ambiguës (usine a gaz).

Par contre en java il existe plusieurs solutions permettant de structurer la programmation.

Donc si vous avez des exemples d’architecture ou des projets (perso) qui se base sur des architectures (MVC par exemple).
0  0 
Avatar de Sub0
Expert confirmé https://www.developpez.com
Le 22/01/2007 à 12:49
http://www.zend.com/fr/products
0  0