Organisation des fichiers

sr34000
Invité n'ayant pas de compte PHPfrance

01 mars 2006, 19:09

Salut

j'aimerais savoir si vous pouvez me donner quelques conseils au niveau de l'organisation de mes fichiers

Je n'ai pas reçu de formation en info et donc j'apprend par moi meme.

Et j'aimerais savoir quelle est la logique (convention) pour organiser structurer un programme

Le dossier include comprend tout les fichiers commun et que l'on inclus dans plusieurs pages

Le dossier temp stocke les fichiers temporaires


1°) Qu'elle type d'info mettre dans les dossier Cache

2°) idem dans les dossier data

3°) quels sont les noms de dossier utile et que doit on y mettre dedans

Je me doute bien que l'on fait ce que l'on veux, mais je me doute bien aussi qu'il y a une logique une rigeur de programmation.

Qu'elles sont ces conventions ?

Mammouth du PHP | 19672 Messages

02 mars 2006, 00:03

Personnellement, je ne connais pas d'autres conventions que celles que je détermine moi-même.

Donc pour ce qui me concerne, je définis les répertoires suivants:
- Un répertoire admin
- les fichiers contenant des classes objet ou des fonctions à inclure : lib (librairie) : j'y inclus en général un sous-répertoire pour les JavaScripts;
- Les styles CSS;
- Les images parfois subdivisés en sous-répertoires : par exemple si j'ai une galerie, j'aurai un répertoire tmp, un grand et un mini;
- Les templates;
- les pages elles-même

C'est très sommairement le schéma basique que j'utilise, je m'y retrouve assez facilement, tu peux broder autour de ça, ce qui est important, c'est que tu t'y retrouves facilement et qu'éventuellement celui qui devra reprendre la maintenance derrière toi ne soit pas complètement paumé (voir ma signature ;)). Utilise des noms de répertoire explicites, ça aide aussi.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 153 Messages

03 mars 2006, 11:41

Salut !

Arf ben moi non plus je ne connais pas d'autres convention mis à part les miennes :)

Je déteste mélanger les langages, c'est pourquoi j'ai adopté une structuration ainsi :

/ajax/ (toutes les pages appelé par un script ajax)
/img/ (toutes les images nécessaires aux pages (attention ce n'est pas le thème du site !))
/js/ (tout le javascript)
/php/ (équivalent de l'"include"), dossier protéger par un .htaccess (deny from all)
/php/lib/ (tous les packages additionnels (des fonctions par exemple))
/php/class/ (toutes les classes (avec pas mal de mysql pour communiquer avec la base))
/php/need.php fichier contenant toutes l'initialisation des variables globales, et des traitements à exécuter sur chaque page
/pages/ (protéger par deny from all), contient tout le contenu pour l'affichage (beaucoup de HTML à peine de php (pour générer un tableau par exemple))
/pages/co/ (les pages où l'utilisateur est connecté)
/pages/deco/ (les pages où l'utilisateur est déco)
/themes/ (les différent thèmes possibles du site (css, images de déco...))
/ contient toutes les pages de traitement php (uniquement du php) ce sont les pages auquelles l'utilisateur accède, ce sont elles qui vont chercher les fichiers html à afficher (dans /pages/), on peut les associer avec le "contrôleur" (celui qui fait l'intermédiaire entre le logiciel/site et l'utilisateur)

[EDIT :
tu peux aussi rajouter :
/admin/ pour une interface admin particulière (perso j'aime pas mais bon)
/forum/ pour un forum
/test/ pour faire des tests, mais avec une protection .htaccess + mot de passe !
/tmp/ pour les fichiers temps
/usr/pseudo pour les fichiers des utilisateurs
]


Voilà ! Cela fait depuis 4 sites que je l'utilise et ça marche plutot bien (c'est très rapide pour retrouver un fichier que l'on cherche). J'ai aussi présenté cela à plusieurs amis et ils l'ont adopté :-)

PS : il n'y a pas de structuration parfaite, celle qui est parfaite correspond à celle qui TE convient le mieux, que tu maîtrises le mieux :)
http://gl2.delcedo.com/ Galaxialord 2 !

sr34000
Invité n'ayant pas de compte PHPfrance

06 mars 2006, 17:40

/pages/ (protéger par deny from all), contient tout le contenu pour l'affichage (beaucoup de HTML à peine de php (pour générer un tableau par exemple))
peux tu expliciter svp

proteger de qui de quoi et comment

Eléphant du PHP | 153 Messages

11 mars 2006, 11:27

Ils sont protégés = inaccessibles, tu peux réaliser ces protections en mettant un fichier .htaccess avec dedans "deny from all", à la racine des dossiers que tu veux protéger (les sous dossiers seront eux aussi inaccessibles). Cette protection n'est efficace que pour le HTTP (en ftp tu pourras toujours avoir accès).
Si l'utilisateur n'a pas besoin d'aller dans un dossier, je le protège, ca permet d'éviter d'éventuelles failles, et puis de toute façon, ca ne le concerne pas donc il n'a rien à faire dans ces endroits.

Dans le dossier /pages/ se trouve tous les traitement de l'affichage HTML et php qui seront récupérés par les fichiers racines afin de les afficher pour le client.

Sinon voici un exemple de comment fonctionne mon système :

/index.php
<?php
require "pages/need.php"; // contient les constantes, charge tous les fichiers nécessaires aux traitements (require de tous les fichiers contenus dans /php (ou include/)), ouvre une connexion avec la base de données, formate les variables en entrées (post, get, request, cookie, server) pour ne pas avoir de faille d'injection ou html, peut vérifier qu'il s'agisse bien d'un membre, peut faire des statistiques sur les pages consultées... => Tous les traitements à faire sur chaque page

// ici se trouve les traitements à faire (analyse des POST / GET, appels des fonctions pour mettre à jour la base de données, etc...)
$nom = $_GET['nom'];

$page_a_afficher = "accueil"; // nom de la page à afficher
require "pages/index.php"; // fichier permettant de gérer l'affichage (voir en dessous)
?>
/pages/index.php
<?php 
// Fonctions à exécuter après le traitement (fermeture de la connexion avec la base de données, calcul du temps de traitement de la page...)
?>
<html>
<head>
[...] tous les headers, titre, script, style, ... du site (cette page permet de servir de "modèle").
<body>
[...] menu présent sur toutes les pages, pub (lol)...
<div>
<?php // la partie "variable" du site
if(!$_REQUEST['page_a_afficher'] && $page_a_afficher file_exists("/pages/".$page_a_afficher))
// pour éviter la faille du include
    require "/pages/".$page_a_afficher.".php"; // récupère le fichier qui va générer le code html pour l'affichage
else
   echo "Page introuvable";
?>
</div>
[...] suite des éléments commun à toutes les pages
</body>
</html>
/pages/accueil.php
<?php 
// page contenant tous les traitements
if($nom){
   ?>
    <p>Bonjour <?php echo $nom ?> !</p>
<?php 
}
else
{
   ?>Bonjour toi ! Tu n'es pas encore inscris !<?php
}
Voilà ! Si tu as des questions ou pas compris quelque chose, n'hésite pas à demander :)
http://gl2.delcedo.com/ Galaxialord 2 !