Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/05/2007, 15h32   #1
En attente de confirmation mail
 
Avatar de fred777888999
 
Inscription : mars 2005
Messages : 250
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 250
Points : 241
Points : 241
Par défaut Inclusion de fichiers

plop all.

Je me retrouve face a une application (web) a l'architecture suivante :
un controleur aiguille sur sur une action php (un peu a la struts) qui est une methode de ce dernier en fonction de l'url tapee. Par ex, taper http://serveur/index/toto va appeler la methode totoAction de la classe index definir dans index.php.
Mon probleme est le suivant : ma classe index contient alors les includes de toutes les fonctions necessaires pour toute l'appli. Ca rame et bouffe une quantite astronomique de memoire (normal, mon fichier index.php contient grosso-merdo l'ensemble de l'appli, c'est bien la qu'est le probleme).
Ex:
Code :
1
2
3
4
5
6
7
8
 
include_once("./application/views/viewHelper.class.php");
include_once("./application/dao/connexionDao.class.php");
...
autres include once.
...
class IndexController extends Controller_Action {
}
Ma question est la suivante : existe-t-il un moyen (simple) de faire l'include de facon plus ou moins dynamique pour par exemple ne lire le fichier connexionDao que quand j'utilise cet objet et non pas a chaque fois que je passe par la racine de mon site ?
D'avance merci.
Fred
fred777888999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2007, 13h30   #2
Rédacteur/Modérateur
 
Avatar de marcha
 
Homme Marc Chappuis
Développeur Web
Inscription : décembre 2003
Messages : 1 535
Détails du profil
Informations personnelles :
Nom : Homme Marc Chappuis
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2003
Messages : 1 535
Points : 2 206
Points : 2 206
Salut,

oui, PHP permet d'inclure des fichiers déclarant des fonctions ou des classes
même à l'interrieur d'une fonction. Prenons un exemple d'une fonction qui
te retournerai l'enregistrement d'un utilisateur depuis la base de donnée

Code :
1
2
3
4
5
6
 
function getUserData($user_id) {
  require_once("db-utils.php");
  require_once("user-utils.php");
  ...
}
Dans cet exemple, les fichiers servant à gérer la db et les utilisateurs
ne sont pas chargé pour les requêtes qui n'appellerait pas getUserData

Une autre approche pour palier au problème récurrent des actions d'une
application. Au lieu d'avoir un fichier actions.php qui contiendrait plein de
fonctions du genre:

Code :
1
2
3
4
5
6
7
8
 
function deleteUser($user_id) {
  ...
}
function addUser($user) {
   ...
}
etc...
Tu peux créer des petits fichiers, deleteUser.php, addUser.php et faire qqch
dans ce gout là:

Code :
1
2
3
 
$action = $_GET['action']; // attention aux attaques possibles
require_once("actions/$action.php");
dans le fichier deleteUser.php tu peux avoir qqch du genre:

Code :
1
2
3
4
5
 
require_once("db-util.php");
$uid = $_GET['uid']; // filtrer les injections SQL !
$sql = "DELETE FROM users WHERE user_id=$uid";
mysql_query(...);
Ainsi tu limites les chargements à ce qui est utile pour une requête.
__________________
Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !
marcha est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h12.


 
 
 
 
Partenaires

Hébergement Web