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

**URL:** <https://www.debian-fr.org/t/resolu-probleme-php-creation-dobjet/12312>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 5:11 UTC](https://www.debian-fr.org/t/resolu-probleme-php-creation-dobjet/12312 "2016-02-20T17:11:20Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![debianhadic](https://www.debian-fr.org/user_avatar/www.debian-fr.org/debianhadic/32/3870_2.png) [@debianhadic](https://www.debian-fr.org/u/debianhadic)\
**Post date:** [Février 20, 2016, 5:11 UTC](https://www.debian-fr.org/t/resolu-probleme-php-creation-dobjet/12312/1 "2016-02-20T17:11:20Z")

</div>

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 ?

```auto
<?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);

?>
```

---

<div class="post-metadata">

**Author:** ![debianhadic](https://www.debian-fr.org/user_avatar/www.debian-fr.org/debianhadic/32/3870_2.png) [@debianhadic](https://www.debian-fr.org/u/debianhadic)\
**Post date:** [Février 20, 2016, 5:11 UTC](https://www.debian-fr.org/t/resolu-probleme-php-creation-dobjet/12312/2 "2016-02-20T17:11:21Z")

</div>

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)

---

<div class="post-metadata">

**Author:** ![usinagaz](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/u/ecae2f/32.png) [@usinagaz](https://www.debian-fr.org/u/usinagaz)\
**Post date:** [Février 20, 2016, 5:12 UTC](https://www.debian-fr.org/t/resolu-probleme-php-creation-dobjet/12312/3 "2016-02-20T17:12:16Z")

</div>

ah ok 😉  
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.

---

<div class="post-metadata">

**Author:** ![usinagaz](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/u/ecae2f/32.png) [@usinagaz](https://www.debian-fr.org/u/usinagaz)\
**Post date:** [Février 20, 2016, 5:12 UTC](https://www.debian-fr.org/t/resolu-probleme-php-creation-dobjet/12312/4 "2016-02-20T17:12:20Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![debianhadic](https://www.debian-fr.org/user_avatar/www.debian-fr.org/debianhadic/32/3870_2.png) [@debianhadic](https://www.debian-fr.org/u/debianhadic)\
**Post date:** [Février 20, 2016, 5:12 UTC](https://www.debian-fr.org/t/resolu-probleme-php-creation-dobjet/12312/5 "2016-02-20T17:12:28Z")

</div>

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 !

---

<div class="post-metadata">

**Author:** ![Dos](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/8dc957/32.png) [@Dos](https://www.debian-fr.org/u/Dos)\
**Post date:** [Février 20, 2016, 5:12 UTC](https://www.debian-fr.org/t/resolu-probleme-php-creation-dobjet/12312/6 "2016-02-20T17:12:48Z")

</div>

![:mrgreen:](https://www.debian-fr.org/uploads/default/original/1X/cc83e9b583138e48ff45f96609046b06d06c7f9d.gif "Mr. Green")

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 🙂
