Page 1 sur 1

Conseils sur les bonnes pratiques du PHP

Posté : 29 juin 2005, 11:49
par Augure
Bonjour,

Je me suis mis au PHP il y a quelques mois maintenant. J’ai réussi à développer mes premiers formulaires avec sauvegarde de données en base. Rien de bien folichon mais il faut bien commencer par lé début …

J’en suis arrivé à la conclusion que développer des pages en HTML dynamique (php / jsp / asp …) est bien différent des développements que j’ai pu faire (VB / PowerBuilder / Delphi / C ) (architecture 1-tiers et 2-tiers).

Les tutoriaux, la documentation PHP en ligne et le fait que j’ai déjà programmé m’a permis d’aborder facilement la syntaxe de base du PHP. Cependant, je n’ai pas réussi à trouver des informations, préconisations, expliquant comment bien structurer à la base un projet LAMP (Linux Apache MySQL PHP) aussi bien en procédural ou OO.

Y a t il quelqu’un qui peu me donner une URL ou les références d’un livre qui explique les grands principes de développement de PHP ? (je ne parle pas de la syntaxe de base )

Je vous remercie d’avance.

PS : J’ai bien tenté de trouvé ces renseignements dans la FAQ ou le Forum, excusez moi si je suis passé à côté d’un sujet équivalent déjà traité.

Posté : 29 juin 2005, 12:46
par Cyrano
Salut,
le livre que je pourrais te conseiller serait PHP5 Avancé chez Eyrolles écrit par cyruss (un des admin du site)

Tu y trouveras probablement ton bonheur. Le modèle objet de PHP5 y est largement abordé, le traitement du XML aussi avec l'introduction de SimpleXML. Tu y trouveras du procédural come de l'OO.
En outre, la seconde édition de cet ouvrage vient tout juste de sortir il y a quelques jours.

Posté : 29 juin 2005, 12:54
par fggdm
Salut,

C'est un peu vaste les "bonnes pratiques". Il y a d'abord des bonnes pratiques de programmation, ensuite on peut avoir des pratiques différentes entre l'objet et le procédural et pour finir des pratiques qui tiennent à un langage particulier. Tu connais l'objet, déjà il faut appliquer les bonnes pratiques de l'objet si tu développes OO en PHP... Que veux-tu exactement ?

Posté : 29 juin 2005, 14:46
par Augure
J'ai déjà développé trois petites applications intranet en 5 – 10 jours. Maintenant j'ai un autre projet que j'ai évalué à une trentaine de jours.

Mes premières applications m'ont servi à découvrir le PHP. L'architecture applicative que j'ai choisi est plus le fruit d'une démarche empirique que pensée. Ne souhaitant pas ré inventer l'eau tiède je demande conseils sur les "bonnes pratiques" avant de me lancer dans cette seconde application.

Voici qq'unes des questions que je me pose :

1/
Faut il créer une page index.php sous cette forme ( Toutes mes forms renvoies vers index.php)
...
 // Mise à jour d'un client
if ( $_POST['OPERATION']=='MODIFIER_CLIENT' ) { 
    require "./Consultation_Client_Enregistrer.php" ;
    require "./Consultation_Client_Detail.php" ;
    require "./Consultation_Client_Consultation_Liste.php" ; }

// Inserer nouveau client
if ( $_POST['OPERATION']=='ENREGISTRER_NOUVEAU_CLIENT' ) { 
    require "./Consultation_Client_Inserer.php" ;
    require "./Consultation_Client_Liste.php" ; }
...
ou faut-il que les form appelle directement les bonnes pages ?

2/ Comment gérer un contexte utilisateur ? Faut il sauvegarder la connexion à la base dans le contexte et à chaque page vérifier qu'elle est valide ?

3/ Comment gérer ce satané bouton "Back" du browser ?

4/ Dans chaque page, je réalise tous mes traitements, puis je crée la page HTML. Mais faut-il, dans cette seconde partie, mixer PHP et HTML ou utiliser que PHP ( ECHO à toutes les lignes)

5/ Comment concilier l'amnésie de PHP entre deux appels et l'instanciation des objets? (Je ne me vois pas tout sérialiser. Je ne veux pas, pour rester simple, utiliser un serveur de composant. De plus vu le niveau de ce qui est demandé c’est inutile, je pourrais à la limite tout écrire en procédural.)

6/ Pour générer le HTML est il intéressant et simple d’utilise les bibliothèques PEAR comme HTML_QuickForm ? (PS : j’utilise beaucoup des tableaux avec des champs cachés et des liens à chaque ligne type « detail », « supprimer »)

7/ Est ce que je me pose de bonnes questions ? En ai je oubliées ?

Bref assez peu de question technique de syntaxe mais des conseils de programmation pour être efficace.

PS : Merci pour les références du livre
PS : Je comprendrai que la réponse à toutes mes questions soit : « ça tombe bien c’est dans le livre »
PS : merci de m’avoir lu jusqu’à la fin.

Posté : 29 juin 2005, 23:22
par Cyrano
Ok, j'y vais d'une proposition pour quelques réponses:

1 : il serait souhaitable dans ta page index de tester d'abord l'existence d'une variable avant de l'utiliser, en effet, tu fais if($_POST['OPERATION'] ...) mais lors de la première ouverture de la page avant même d'aller au premier formulaire, cette variable n'existe pas. Tu peux à ce moment là utiliser un switch et l'initialiser avec l'envoi du formulaire s'il y a lieu ou initialiser une valeur par défaut ;

2 : Là, j'hésite un peu quant à l'interprétation de ta question :-k ;

3 : À cause des formulaires ?

4 : Évite autant que faire se peut de faire interpréter du html: alterne les langages en fermant les balises PHP pour insérer du HTML et inversement;

5 : Avec des variables de session que tu initialises ou modifie dans tes classes mais qui peuvent de ce fait se transmettre au fil de la navigation entre deux instanciation de classe ;

6 : Je ne m'aventure pas dans une réponse, je n'ai jamais utilisé PEAR, j'arrive à m'en passer très bien;

7 : aucune question n'est mauvaise : quant à en oublier, je crois qu'on en oublie tous plus ou moins. Dans les questions oubliées , on aurait pu penser à l'utilisation de templates qui te permettraient de séparer quasiment complètement le traitement des données de leur présentation. Mais ça dépend de ce que tu veux faire. La question sur l'opportunité ou non d'utioliser l'objet de préférence au procédural... mais ça dépend du degré de poratabilité que tu veux et quelles classes tu veux utiliser: des classes existantes (PEAR) ou des classes maison. De l'opportunité aussi de modéliser ton projet...etc etc.. :)

BOn courage