OVH Cloud OVH Cloud

require_once et php3

3 réponses
Avatar
annie.matteo
Bonjour,

Un ensemble de composants dév pour php4 doivent tourner sous PHP3.
Ils comportent des "require_once/include_once" non pris en compte en
php3.
les composants "requirés_once" sont des classes.
Y-aurait-il un moyen de savoir si une classe a déjà été définie ou pas
(ceci en php3 :))

Merci d'avance

3 réponses

Avatar
Laurent Seguin
Guillaume Bouchard , le 08 août 2003 16:45:26, écrivait
ceci:

J'ia un doute. Les class ca existait en php3 ?


Non c'est apparu avec PHP4.

Avatar
john gallet
Bonjour,

Un ensemble de composants dév pour php4 doivent tourner sous PHP3.
C'est pas gagné c't'affaire...


Tu auras bien de la chance si ce n'est **que** require/include_once qui
sont utilisés de spécifique php4 vs php3.

Y-aurait-il un moyen de savoir si une classe a déjà été définie ou pas
(ceci en php3 :))
Hum. Il y a bien les get_defined_ mais de toutes façons c'est en php

4.04 et je ne vois rien pour les classes. La notion de classe existait
déjà
syntaxiqueemnt, mais avec un héritage buggé jusqu'en 4.0x (4.06 je
crois).

Si tu veux vraiment essayer tu peux toujours définir une fonction
require_once() qui fait appel à require, definie dans un fichier en
auto_prepend.
Pour gérer les doublons potentiels, deux solutions :

1) gérer un tableau statique des noms de fichiers déjà inclus, avec le
problème des chemins relatifs absolus etc... Il faudra peut-être en
venir à stocker plutôt un md5 du fichier inclus que son nom.

2) modifier les fichiers includes et ajouter simplement :
if(defined(IDENTIFIANT_UNIQUE_DU_FICHIER)=úLSE)
{
define("IDENTIFIANT_UNIQUE_DU_FICHIER","blabla")
//ici le reste du fichier tel quel

}

Enfin bref, le plus simple sera sans doute... d'installer php4.

a++
JG

Avatar
LPA
Il te suffit de déclarer en global une variable dans le constructeur de ta
classe et ensuite, tu ne crée ton objet que si la variable n'existe pas.

un truc du style :

if(!defined("_CONS-CLASS_TOTO_")) define("_CONS-CLASS_TOTO_",TRUE);

CU

LPA

"Nini" wrote in message
news:
Bonjour,

Un ensemble de composants dév pour php4 doivent tourner sous PHP3.
Ils comportent des "require_once/include_once" non pris en compte en
php3.
les composants "requirés_once" sont des classes.
Y-aurait-il un moyen de savoir si une classe a déjà été définie ou pas
(ceci en php3 :))

Merci d'avance