Plusieurs require_once en php

salut a tous,

Je crée un site qui doit, a chaque page, charger plusieurs classes. C’est toujorus les memes. j’ai donc, a chaque début de fichier php :

            require_once("utilitaires/connexion.php");
	require_once("classes/personne.inc");
	require_once("classes/personnes.inc");
	require_once("classes/typevenement.inc");
	require_once("classes/registre.inc");
	require_once("classes/evenement.inc");
	require_once("classes/evenements.inc");

Et ce, sur toutes les pages…

Je me demandais si ca serait pas plus joli de ne faire qu’un appel du genre :

require_once(“classes.php”);

et de mettre tous les appels dans le fichier classes.php.

Quelle est la meilleure solution selon vous ?

en effet, l’appel d’un seul fichier contenant toutes tes classes est plus judicieux, et ça t’éviteras même d’en oublier :wink:

yep, mais je me demandais si c’est vraiment propre de faire un appel qui appelle :pt1cable:
Edité le 11/06/2007 à 08:59

je trouve que c’est plus propre que d’appeller 70 fichiers successivement en tout cas. Après je ne suis pas spécialiste non plus :wink:

Moi je dirais que si c’est toujours les même et qu’elles sont utilisées tu peux faire un include unique qui inclura les autres. Par contre si dans tes différents scripts tu ne te sers pas de toutes les classes, je trouve que c’est alors inutile d’inclure celle qui ne servent pas, parce que ça va forcer php à les parser pour rien.

c’est plus propre à lire pour tes collègues, et plus simple à mettre à jour :oui: …
imagine qu’ont te demandes de changer tes extensions de .inc en .include … tu vas en mettre du temps à tout changer manuellement :ane:

(vive __autoload, php5 et poo ;))

si y a vraiment que ça comme problème dans ton code c’est le top :wink:

ma foi oui ya que ca, je cherche a faire au mieux, c’est mon premier site en php objet.

Un problème après reste la gestion des dossiers avec un fichier général à ton site. Personnelement pour pallier à cela, j’ai mis une variable qui indique ou se trouve le ficheir actuel en position relative. Je m’explique en examples :

base.php contient toute la base de mon site, je dois l’appeler dans tous mes fichiers, il est situé dans le dossier racine de mon site. Ce fichier appel par exemple 3 autres fichiers qui sont eux aussi dans le dossier racine donc par la méthode require_once(‘file’); .

Si j’appel le fichier base.php de index.php contenu dans le dossier racine, pas de problème, je fais un require_once(‘base.php’); et tout marche correctement.

Problème, si je suis dans le dossier toto, et que je veux appeler base.php, je vais mettre require_once(’…/base.php’); mais les 3 fichiers appelés dans base.php sont appelés de la manière suivante : require_once(‘file’); donc il va les chercher directement dans le dossier courant, à savoir toto, alors qu’ils sont dans le dossier racine.

Personnelement dans chaque index je définie une variable qui donne la position de ce fichier par rapport au dossier racine.
Toto contiendrais alors $var=’…/’; et j’appelerais base.php de la méthode suivante : require_once($var.‘base.php’);

Seulement maintenant mon fichier base.php appel les 3 fichiers de la manière suivante : require_once($var.‘file’); ainsi il appel les bons fichiers. Pour le fichier index.php contenu dans le dossier racine, je fixe ma variable $var=’./’; et comme ça il va encore chercher les bons fichiers.

Peut-être que je me complique la vie et qu’il y a une méthode de n00b que je connais pas, mais il n’y a qu’ainsi que j’ai supprimé toutes mes erreurs dand mes différents dossiers. S’il y a mieux je suis preneur.

bou c moche ça :slight_smile:

le include_path il sert à quoi alors ?!!

sans-nom tu fais quoi la ? t’es pas modérateur ? au lieu de tracker les pubs déguisées recadre moi toutes ces brebis égarées !

J’ai rien dit =X
Edité le 11/06/2007 à 16:02


Ca revient au même cette fonction :/ !

quaz> t’es mignon, mais l’include_path est tout sauf modifiable dans la plupart des environnements…

(dommage)

Ouais enfin y a quand-même une fonction prévue pour ça : http://www.php.net/set_include_path

Sinon, un bête ini_set fait l’affaire.

L’idée reste quand même de le faire de manière unique.

Ceci dit, ça doit pouvoir se faire avec PHPSetVar (enfin, voir doc de PHP pour Apache2)

Moi tout appel à mon site passe par le fichier index.php du dossier racine.

Oui mais si tu appel de ./toto1/toto2/toto3/ tu fais comment, tu spécifies un url absolue dans les includes de ton index?

Je n’appelle jamais un fichier depuis un sous-dossier.

N’importe quel fichier inclus dans le script l’est par le fichier index.php du dossier racine de l’appli (ou bien par un fichier PHP lui-même inclut par index.php) via un chemin relatif par rapport ce même dossier racine.

Dans chaque sous-dossier j’ai un fichier index.php qui fait remonter au dossier parent (un truc comme header(Location: …/)) : Bien sûr Apache est configuré pour utiliser ce fichier comme fichier index d’un répertoire.


Cela dit, si mon "système" à des failles, je suis ouvert à toute critique :)

Tes sous-dossiers ne te servent donc que de stockage?

Raynor> un htaccess c’est pas récursif? en gros, si y en a un sur un dossier parent il s’applique sur tous? Si oui, tu as PHPIniVar que tu peux mettre dedans :slight_smile:

Mais bref. Perso, je fais pas forcément mieux.