Structure d'un site en php

  • Auteur de la discussion Auteur de la discussion Moof
  • Date de début Date de début
WRInaute discret
Salut la compagnie,

Je me lance dans un nouveau site (parce que j'aime bien et ça m'amuse). Mais cette fois-ci, j'ai envie de le faire proprement. Avec un système de templates, conçu pour pouvoir être multilingue par la suite, ...

J'aimerais savoir comment vous vous y prenez pour structurer vos sites ?
Perso, je pensais créer :
- un dossier fonctions regroupant tout plein de fonctions php pratiques.
- un dossier class contenant les différentes classes que j'utiliserai.
- un dossier templates
- un dossier styles pour les css.
- un dossier lang ? pour les fichiers langues ?
- un dossier include contenant les pages php incluses dans toutes les pages de mon site.

Deuxième question : est-ce que vous codez tout à la main, ou utilisez-vous des classes php trouvées sur internet ou dans des scripts de forum par exemple (je pense par exemples aux classes pour gérer les connexions mysql, les classes de sessions, de templates, ...) ?

Merci pour vos conseils !
 
WRInaute accro
Très bonne façon de faire je pense.
Pour ce qui est des class, parfois ça ne sert a rien de se fatiguer lorsque l'on trouve des petits bijoux de programmation sur le net.
 
WRInaute discret
Hello,

De mon coté je fais tout comme tu as dis, sauf que mes classes, je les mets dans mes dossiers. Exemple si je créé un système de petites annonces, ma class annonce se trouvera dans mon dossier annonce, ca me simplifie la tache quand ensuite je veux les réutiliser dans un autre site.

Et puis je n'utilise plus de template. Ca me rajoute une couche supplémentaire de boulot qui à mon gout n'en vaut pas la peine. De plus, conçernant les templates, il ne faut pas oublier que ca charge de nouvelles classes, de nouvelles fonctions.... et de ce fait augmente la charge serveur.

Oui je code tout à la main. Ca me permet de pouvoir intervenir rapidement, et sans perdre du temps à comprendre le code qu'un autre aura fait.

Pour finir, essaies de faire en sorte d'organiser ton boulot pour être le plus à l'aise possible.
Il n'y à pas de recettes qui s'adapte à tous les codeurs.

Bon courage, et amuses toi bien.
 
WRInaute discret
Audiofeeline a dit:
Pour ce qui est des class, parfois ça ne sert a rien de se fatiguer lorsque l'on trouve des petits bijoux de programmation sur le net.

Je suis d'accord avec toi.

Quels sont les petits bijoux dont tu parles ?

jexl a dit:
Et puis je n'utilise plus de template. Ca me rajoute une couche supplémentaire de boulot qui à mon gout n'en vaut pas la peine. De plus, concernant les templates, il ne faut pas oublier que ca charge de nouvelles classes, de nouvelles fonctions.... et de ce fait augmente la charge serveur.

C'est vrai que les templates représentent une charge supplémentaires, mais les pages php de mes vieux sites ressemblent souvent à un truc du genre :

Code:
<?php
...
?>

de l'html

<?php
...
?>

de l'html avec parfois des <?php echo "blablabla" ?>
ce qui est vraiment très moche, et surtout illisible et insupportable lorsque je souhaite modifier l'apparence de la page.

De plus, les templates sont bien pratiques si on souhaite faire du multilingue, non ?
 
WRInaute discret
Moof a dit:
C'est vrai que les templates représentent une charge supplémentaires, mais les pages php de mes vieux sites ressemblent souvent à un truc du genre :

Code:
<?php
...
?>

de l'html

<?php
...
?>

de l'html avec parfois des <?php echo "blablabla" ?>
ce qui est vraiment très moche, et surtout illisible et insupportable lorsque je souhaite modifier l'apparence de la page.

De plus, les templates sont bien pratiques si on souhaite faire du multilingue, non ?

C'est vrai que des fois ca fait un peu fouilli de mélnager du html et du php.
Pour les sites multilangue, ce que je fais, c'est un tableau php avec x traduction, et ensuite j'affiche. c'est pas forcément plus long que d'qvoir deux templates à modifier.
ex :
Code:
$aTexte['titre']['fr'] = 'Mon titre FR';
$aTexte['titre']['en'] = 'My Title EN';
$aTexte['commentaire']['fr'] = 'Mon commentaireFR';
$aTexte['commentaire']['en'] = 'My comment EN';
....
et ensuite j'affiche 

echo $aTexte['titre'][$_SESSION['lang']];
Je trouve cette technique très pratique.
 
WRInaute passionné
Moof a dit:
C'est vrai que les templates représentent une charge supplémentaires, mais les pages php de mes vieux sites ressemblent souvent à un truc du genre :

Code:
<?php
...
?>

de l'html

<?php
...
?>

de l'html avec parfois des <?php echo "blablabla" ?>
ce qui est vraiment très moche, et surtout illisible et insupportable lorsque je souhaite modifier l'apparence de la page.

C'est ce que j'ai, je m'en sort très bien,
comment veux tu faire ???
le tamplate est quand même lourd, non ??
 
WRInaute occasionnel
Pour ma part c'est BDD et j'utilise en parallèle une fonction traduction qui cherche une partie de mon contenu dans un fichier texte histoire de ne pas saturer la base.
 
WRInaute discret
guicara a dit:
Moof a dit:
C'est vrai que les templates représentent une charge supplémentaires, mais les pages php de mes vieux sites ressemblent souvent à un truc du genre :

Code:
<?php
...
?>

de l'html

<?php
...
?>

de l'html avec parfois des <?php echo "blablabla" ?>
ce qui est vraiment très moche, et surtout illisible et insupportable lorsque je souhaite modifier l'apparence de la page.

C'est ce que j'ai, je m'en sort très bien,
comment veux tu faire ???
le tamplate est quand même lourd, non ??
Imaginons que tu veuilles modifier ta page html, il faut aller modifier tous les bouts d'html intercalés entre les bouts de code php, en faisant attention à ne pas toucher aux divers bouts de php inclus dans l'html :)

Pas pratique non ?

Avec des templates, tu remanies ta page html comme tu veux sans te soucier du code php.


C'est rigolo, je vois qu'en fait personne n'est d'accord ou n'applique les même techniques :lol:
 
WRInaute passionné
Template + utilisation de couche d'abstration pour la BDD quasi obligatoire pour faire un site évolutif facilement selon moi. (+ un système de cahe ça le fait aussi).

Pour les classes y'a du très bon du coté de PEAR (pour tout ce qui est moteur de template, classe d'abstration de BDD (quoi que en php 5.1 ça existe enfin), classe pour les formulaires (quick_form), classe pour les caches, ...).

Sinon pour les classes y'a __autoload() qui est à regarder de prêt, ça évite bien des soucis (ça permet de charger une classe demandée automatiquement sans avoir à à faire des include partout).
 
WRInaute passionné
Une classe par exemple où tu ne fait pas appel explicitement à mysql, postgre ou autre. Mais via une classe qui selon ta bdd va faire en sorte d'utiliser les bonnes fonctions, comme ça tu changes de type de BDD en 2 minutes au lieu de te prendre la tête à tout changer.
 
WRInaute discret
Perso, je ne suis vraiment pas pour les couches d'abstractions.
Actuellement, je suis contraint de bosser avec PEAR, et ca fout la pagaille plus que cela nous rend service. Comme les moteurs de template, ca charge à nouveau des classes qui prennent de la ressource pour rien.

Et en plus Ca ne nous sert pas en cas de changement de base.
Actuellement, on fait nos dev avec SQL Server, et il est question de migrer sur MySql. Théoriquement, grace à PEAR, ca devrait se faire tout seul. Et ben non, nous venons de faire des tests, ete nous sommes obligé de repredrendre nos requetes à la main.

Donc, pour moi, je préfère de très loin me passer des couches d'abstractions. Et puis pour être honnète, quand bien même ca marcherait pour les migrations, c'est pas tous les matins que l'on change de système pour les base de données.
 
WRInaute passionné
Bah bien fait ça passe sans problème...

Dans ses requêtes après il faut éviter les spécifités d'un SGBD voir utiliser des fonctions équivalente (genre en MySQL on a LIMIT qui n'existe pas ailleur, la plupart des classes d'abstraction permettent une simulation de ce comportement sur d'autres SGBD).

Et les template oui ça va prendre un peu plus de ressource (tu utilies lequel?) mais là impossible de nier la flexibilité apporté.

Suffit de regarder les forums (tous en fait, enfin tous ceux que j'ai pu tester comme phpBB, invision, punBB) ou encore des choses comme Dotclear ont un système de template et d'abstration de BDD.
 
WRInaute accro
>> un dossier include contenant les pages php incluses dans toutes les pages de mon site.

il serait mieux de découper par modules

moi j'ai :
modules/module1
modules/module2
modules/module3

chaque module à son propre header.php et fonctions.php chargé avant envoi de données au navigateur. de ce fait, chaque module peut etre déplacé d un site à un autre sans rechercher les focntions et procédures liées
 
WRInaute discret
Bacteries a dit:
Bah bien fait ça passe sans problème...

Tout les dev ont été fait proprement. En revanche la version utilisée pour PEAR date un peu, c'est la raison pour laquelle on est obligé de tout reprendre à la main.

Bacteries a dit:
Et les template oui ça va prendre un peu plus de ressource (tu utilies lequel?) mais là impossible de nier la flexibilité apporté.
j'utilise SMARTY

Bacteries a dit:
Suffit de regarder les forums (tous en fait, enfin tous ceux que j'ai pu tester comme phpBB, invision, punBB) ou encore des choses comme Dotclear ont un système de template et d'abstration de BDD.
A mon avis, c'est dans ces cas, ou le template à vraiment utile. ces forums sont libres et les utilisateurs ont des niveaux de connaissances différents. Cela permet aux gens qui n'ont pas beaucoup de savoir en programmation de pouvoir quand même modifier l'aspect de leurs forum ou autres CMS.

La raison pour laquelle les templates ne branchent pas, c'est qu'ils font, in fine, exactement la même chose que moi avec mon code PHP / HTML. Sauf qu'on ne le voit pas. Ce qui veut dire que je ne maitrise pas tout ce qui est fait pour obtenir mon resultat.
 
WRInaute discret
e-kiwi a dit:
>> un dossier include contenant les pages php incluses dans toutes les pages de mon site.

il serait mieux de découper par modules

moi j'ai :
modules/module1
modules/module2
modules/module3

chaque module à son propre header.php et fonctions.php chargé avant envoi de données au navigateur. de ce fait, chaque module peut etre déplacé d un site à un autre sans rechercher les focntions et procédures liées

Pas bête, cela rejoint ce que disait jexl dans son premier message :

De mon coté je fais tout comme tu as dis, sauf que mes classes, je les mets dans mes dossiers. Exemple si je créé un système de petites annonces, ma class annonce se trouvera dans mon dossier annonce, ca me simplifie la tache quand ensuite je veux les réutiliser dans un autre site.

Mais encore faut-il savoir de quelle manière découper son site en modules :oops:
 
WRInaute discret
Pour lé découpage du site, ca vient naturellement quand tu rédiges ton cahier des charges. De plus ca peut aider le référencement.

Imaginons que tu ais une partie petite-annonces, tu nommes ton dossier petites-annonces-mot-clé/ et le tour est joué.
Aussi, j'y gagne beaucoup en visibilité, car mes dossiers de fichier php ou autres on des tailles raisonnables .
 
WRInaute passionné
Moof a dit:
guicara a dit:
Moof a dit:
C'est vrai que les templates représentent une charge supplémentaires, mais les pages php de mes vieux sites ressemblent souvent à un truc du genre :

Code:
<?php
...
?>

de l'html

<?php
...
?>

de l'html avec parfois des <?php echo "blablabla" ?>
ce qui est vraiment très moche, et surtout illisible et insupportable lorsque je souhaite modifier l'apparence de la page.

C'est ce que j'ai, je m'en sort très bien,
comment veux tu faire ???
le tamplate est quand même lourd, non ??
Imaginons que tu veuilles modifier ta page html, il faut aller modifier tous les bouts d'html intercalés entre les bouts de code php, en faisant attention à ne pas toucher aux divers bouts de php inclus dans l'html :)

Pas pratique non ?

Avec des templates, tu remanies ta page html comme tu veux sans te soucier du code php.


C'est rigolo, je vois qu'en fait personne n'est d'accord ou n'applique les même techniques :lol:

Chacun ces méthodes !

Oui effectivement,
pourquoi pas

Personnellement sa ne me gène pas du tout de modifier le html par page.

Sauf que j'organise mon site avec des includes : par exemple je fais une inclusion de la page menu.php (qui contient du html), je place ce code d'include sur mes pages... pareille pour le footer... Donc pour moi c'est simple !
 
WRInaute passionné
jexl a dit:
A mon avis, c'est dans ces cas, ou le template à vraiment utile. ces forums sont libres et les utilisateurs ont des niveaux de connaissances différents. Cela permet aux gens qui n'ont pas beaucoup de savoir en programmation de pouvoir quand même modifier l'aspect de leurs forum ou autres CMS.

La raison pour laquelle les templates ne branchent pas, c'est qu'ils font, in fine, exactement la même chose que moi avec mon code PHP / HTML. Sauf qu'on ne le voit pas. Ce qui veut dire que je ne maitrise pas tout ce qui est fait pour obtenir mon resultat.

Hummm je ne vois pas du tout les template comme ça; ça permet d'avoir le code d'un coté et la présentation de l'autre.

En gros avoir un fichier ou tu fais tout tes appels de classes & cie, tes traitements, et un fichier où tu indiques uniquements où vont aller tes données.
Le jour où tu as un changement de look ou si on te demande "ça serait bien d'avoir une seconde skin sur le site" tu es bien content d'avoir les templates.

L'architecture n tier (ou MVC, ...) a quand même fait ses preuves.
 
WRInaute discret
Bacteries a dit:
Hummm je ne vois pas du tout les template comme ça; ça permet d'avoir le code d'un coté et la présentation de l'autre.

En gros avoir un fichier ou tu fais tout tes appels de classes & cie, tes traitements, et un fichier où tu indiques uniquements où vont aller tes données.
Le jour où tu as un changement de look ou si on te demande "ça serait bien d'avoir une seconde skin sur le site" tu es bien content d'avoir les templates.

L'architecture n tier (ou MVC, ...) a quand même fait ses preuves.

Il s'agit juste de la methode de travail qui s'adapte le mieux, pour l'instant, à mes besoins. Je ne prétends absolument pas qu'il s'agit de LA façon de bien structurer son site.
Les moteurs de templates apportent des avantages et aussi des inconvénients. D'après mon calcul, lors de l'élaboration de mes cahiers des charges pour les sites que j'ai pu réaliser ces derniers temps, les contraintes prenaient le dessus sur les avantages. C'est pourquoi j'ai choisi de ne pas les utiliser. Tout simplement.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut