bonjour tout le monde
J'ai un souci concernant l'implémentation des classes php5 en php4, et j'aimerai savoir s'il y'a moyen que mon code en php5 soit fonctionnelle sur des versions antérieurs de php..
Merci
bonjour tout le monde
J'ai un souci concernant l'implémentation des classes php5 en php4, et j'aimerai savoir s'il y'a moyen que mon code en php5 soit fonctionnelle sur des versions antérieurs de php..
Merci
Tout dépend du niveau de complexité de tes classes en fait...
Parfois il suffit de modifier tous les private/public/protected en var pour que ca fonctionne, mais je crois que tu peux avoir d'autres problemes sur la surcharge, le constructeur etc.
Voilà un exemple de classe que j'utilise:
j'utilise cette classe pour la connexion à la bdd
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 class myconnect { private $server; // nom du serveur mysql private $user; //nom de l'administrateur private $password; // password de l'administrateur private $database; // nom de la base de données à manipuler public $querySql; // chaîne string qui va représenter la requête SQL elle-même private $error; // récupérer le message d'erreur transmis lors de la connexion mysql private $error_no; // récupérer le code d'erreur private $true_select = FALSE; // permettra de vérifier si la requête SQL commence par select ... private $nb_arg_construct; // nombre d'arguements du constructeur private $numrows; // nombre de lignes pour le résultat private $numfields; // nombre de champs private $array_datas; // tableau contenant toutes les valeurs des enregistrements private $array_fields; // tableau contenant les noms des champs lors de la requête private $link; // identifiant de la ressource mysql private $success; // attribut qui va garantir la sélection correcte de la BD private $result; // attribut qui va stocker le résultat de ma requête SQL // déclarer le constructeur public function __construct($nameserver,$nameuser,$namepassword,$namedatabase) { session_start(); $this->nb_arg_construct = func_num_args(); if ( $this->nb_arg_construct != 4 ) { } else { // le nombre d'arguments est correct // assignation des attributs de l'objet avec les variables transmises $this->server = $nameserver; $this->user = $nameuser; $this->password = $namepassword; $this->database = $namedatabase; // vérifier les données transmises // faire notre connexion avec la fonction mysql_connect $this->link = @mysql_connect($this->server,$this->user,$this->password); if (!$this->link) { $this->error = mysql_error($this->link); $this->error_no = mysql_errno($this->link); } else { // sélectionner la base de données $this->success = @mysql_select_db($this->database,$this->link); if (!$this->success) { $this->error = mysql_error($this->link); $this->error_no = mysql_errno($this->link); } } } //fin if test arguments } //fin constructeur
Ben t'enlèves tous les type private, protected et public et remplacer par var et sa devrait marcher. C'est ce que koopajah t'as dis.
tu vas aussi avoir un probleme avec le constructeur, il me semble que __construct() ne marche que depuis PHP5 (j'ai regardé vite fait mais je n'arrive pas à l'affirmer )
donc ça serai mieux que je mette function myconnect (..) pour le constructeur??
ok merci beaucoup les gars, je vais tester
merci encore une fois pour vos réponse
bon j'ai éffectuer les modifications nécessaires mais ça m'affiche un message d'erreur:
la ligne 9 contient la déclaration de la classe myconnectFatal error: Cannot redeclare class myconnect in c:\program files\easyphp\www\espace client(emagin)\inc\classes.php on line 9
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 class myconnect { //la ligne 9 var $server; // nom du serveur mysql var $user; //nom de l'administrateur var $password; // password de l'administrateur var $database; // nom de la base de données à manipuler var $querySql; // chaîne string qui va représenter la requête SQL elle-même var $error; // récupérer le message d'erreur transmis lors de la connexion mysql var $error_no; // récupérer le code d'erreur var $true_select = FALSE; // permettra de vérifier si la requête SQL commence par select ... var $nb_arg_construct; // nombre d'arguements du constructeur var $numrows; // nombre de lignes pour le résultat var $numfields; // nombre de champs var $array_datas; // tableau contenant toutes les valeurs des enregistrements var $array_fields; // tableau contenant les noms des champs lors de la requête var $link; // identifiant de la ressource mysql var $success; // attribut qui va garantir la sélection correcte de la BD var $result; // attribut qui va stocker le résultat de ma requête SQL ...... }
t'as pas fait des require au lieu de require_once quelque part?
on dirait qu'il inclut deux fois ton code et que du coup il dit que la classe myconnect existe deja.
j'ai vérifier mais y'a pas de require_once, je crois qu'il y'a autre chose.
En tout cas je te remercie vraiment beaucoup pour tes réponses koopajah
a mon avis, tu as deux fois une instruction du style require(monfichier de class) et du coup ca pose des problemes.
Remplaces par des require_once pour l'inclusion de ta classe
merci koopajah ça marche
et merci à vous tous pour vos réponse
Partager