[RESOLU] Problème PHP création d'objet

Voila j’essaye de faire repartir le site d’une boite de textile, j’ai les sources PHP créer par une école d’un côté le schéma de la base de l’autre …
Pour le moment le serveur fonctionne, la base a été recréée, l’accès ODBC est opérationnel.
Je vous passe le code suivant c’est la dénition d’un Objet nommé DB. L’instance est déclarée à la fin du code.
J’ai vérifié si les paramètres à l’objet arrivaient bien, ça c’est OK.
Le problème se situe au niveau du constructeur (__construct) il n’est pas appelé lors de la création de l’objet, je suis plus calé en Pascal Objet et même en C++, alors je ne sais pas si le seul fait de l’appelé __construct suffit a faire comprendre que c’est le constructeur ?

<?php

class DB {

	var $link;

	var $nb_queries = 0;



	function __construct($srv, $user, $pass, $db) {

		$this->link = mysql_connect($srv, $user, $pass);

		mysql_select_db($db, $this->link);

	}



	function query($req, $debug = false) {

		if($debug)

			print '<font color="green">Requete SQL : "'.$req.'"</font><br />';

		$sql = mysql_query($req/*, $this->link*/);

		if(!$sql) {

			print '<font color="red">Erreur MySQL : '.mysql_error(/*$this->link*/).'</font><br />';

		}

		$this->nb_queries++;

		return $sql;

	}



	function get_result($req) {

		return mysql_fetch_array($this->query($req), MYSQL_ASSOC);

	}



	function get_var($req) {

		$data = mysql_fetch_array($this->query($req), MYSQL_NUM);

		return $data[0];

	}



	function fetch_array($sql) {

		return mysql_fetch_array($sql, MYSQL_ASSOC);

	}



	function num_rows($sql) {

		return mysql_num_rows($sql);

	}



	function get_nb_queries() {

		return $this->nb_queries;

	}



	function last_id() {

		return mysql_insert_id(/*$this->link*/);

	}



	function escape($str) {

		return mysql_real_escape_string ($str/*, $this->link*/);

	}



	function like_escape($str) {

		return mysql_real_escape_string (str_replace('_', '\_', str_replace('?', '\?', str_replace('%', '\%', $str)))/*, $this->link*/);

	}

}



$DB = new DB($db_host, $db_user, $db_pass, $db_base);

?>

Pour ceux que ça intéresse le problème venait de la version de PHP, le __construct ne fonctionne qu’avec PHP5 (j’étais en 4)

ah ok :wink:
je pensais que, de même wakeUp et d’autres, c’était une fonction “magic” de php de base …
Bon on attend php6(à moins qu’il soit déjà pondu), je n’ai connu que php5, on a assez à faire avec hein ? lol.
C’est pas aussi rigoureux que java il me semble, mais ça décoiffe bien quand même.

Mais je me demende si tu ne ferais pas mieux d’étendre la classe PDO … c’est possible ça ?

Pour un ex codeux besogneux en C/Pascal comme moi le PHP ça reste de la bidouille de brouteurs, j’ai encore du mal à considérer ça comme un langage !

:mrgreen:

Il ne faut pas utiliser PDO pour Mysql, point de vue performances, il reste en dessous de mysql et mysqli. Mysqli reste, selon moi, la meilleure alternative pour se connecter à une DB. Je dirais même qu’il n’est pas nécessaire de faire de surcouche puisque mysqli gère tout en objet et trow des exceptions :slightly_smiling: