Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CLASSE PHP5 POUR SE CONNECTER À MYSQL AVEC GESTION D'ERREURS


Information sur la source

Catégorie :Base de données Classé sous : basededonnées, mysql, connection, php5, classe Niveau : Débutant Date de création : 04/05/2006 Vu : 7 995

Note :
8,5 / 10 - par 2 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

Description

Oui, vous allez me dire : encore une classe pour utiliser Mysql
mais elle permet de rappeler les différentes possibilités offertes par PHP5
(classe réalisée au cours de Webmaster)
en  lisant les commentaires, vous allez comprendre ...
 

Source

  • <?php
  • // classe standard Exception de PHP5
  • // gestion des erreurs avec une classe personnelle héritant de la classe générique Exception
  • // un rappel
  • /*
  • classe Exception
  • class Exception {
  • private $message;
  • private $code;
  • private $line;
  • private $file;
  • public function __construct($message,$code = NULL) {
  • $this->message = $message;
  • $this->code = $code;
  • }
  • // méthode getMessage pour récupérer le message d'erreur ...
  • public function getMessage() {
  • return $this->message;
  • }
  • public function getCode() {
  • return $this->code;
  • }
  • public function getFile() {
  • return $this->file;
  • }
  • public function getLine() {
  • return $this->line;
  • }
  • }
  • */
  • //*************************************************************************
  • //définition d'une classe personnelle de gestion des erreurs
  • class MyException extends Exception {
  • // ma classe MyException hérite de la classe générique Exception
  • //les attributs hérités de la classe Exception
  • protected $message;
  • protected $file;
  • protected $code;
  • protected $line;
  • // définition du constructeur
  • public function __construct($msg) {
  • // on associe le constructeur de la classe générique à celui de cette classe personnelle
  • parent::__construct($msg);
  • // possibilité d'envoyer un mail directement à l'administrateur pour l'avertir de l'erreur
  • // ou encoder dans un fichier log ...
  • // à vous de voir
  • }
  • private function getTime() {
  • return date('d-m-Y H:i:s');
  • // récupérer la date du serveur lorsqu'on lance l'exception
  • }
  • public function getSummary() {
  • // méthode à appeler pour afficher l'erreur
  • $str = "une exception a été générée: <br>";
  • $str .= "<strong>Le message : " . $this->getMessage() . "</strong><br>";
  • $str .= "Nom du fichier : " . $this->getFile() . "<br>";
  • $str .= "Ligne du script : " . $this->getLine() . "<br>";
  • $str .= "Erreur exécutée le : " .$this->getTime() . "<br>";
  • return $str;
  • }
  • public function __tostring(){
  • // si appel direct de l'objet pour impression
  • return $this->getSummary();
  • }
  • }
  • // définition de la classe
  • class myconnect {
  • // déclaration des attributs
  • 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
  • private $array_config; // tableau regroupant tous les attributs de la configuration mysql
  • 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){
  • // assigner les attributs de l'objet avec les variables que je vais transmettre en argument
  • // tester le nombre d'arguments que l'on passe
  • // func_num_args() qui permet de calculer le nombre d'arguments d'une fonction
  • // func_get_args() permet de récupérer un array avec tous les arguments du constructeur
  • $this->nb_arg_construct = func_num_args();
  • if ( $this->nb_arg_construct != 4 ) {
  • $str_error = "sorry, le nombre de paramètres transmis est incorrect<br>";
  • $str_error .= "5 paramètres obligatoires <br>";
  • throw new MyException($str_error);
  • }
  • 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
  • // compléter le tableau array_config
  • $this->array_config['server'] = $this->server;
  • $this->array_config['user'] = $this->user;
  • $this->array_config['password'] = $this->password;
  • $this->array_config['database'] = $this->database;
  • // 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);
  • $str_error = "sorry, connexion impossible à Mysql <br>";
  • $str_error .= "Code : " . $this->error_no . "<br>";
  • $str_error .= "Message d'erreur : " . $this->error . "<br>";
  • throw new MyException($str_error);
  • }
  • 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);
  • $str_error = "sorry, base de données impossible à sélectionner <br>";
  • $str_error .= "Code : " . $this->error_no . "<br>";
  • $str_error .= "Message d'erreur : " . $this->error . "<br>";
  • throw new MyException($str_error);
  • }
  • }
  • } //fin if test arguments
  • } //fin constructeur
  • // créer une méthode publique qui va me permettre d'exécuter une requête SQL
  • public function toQuery($sql) {
  • if (func_num_args() != 1) {
  • $str_error = "attention, un seul argument pour cette fonction ...<br>";
  • throw new MyException($str_error);
  • }
  • else {
  • // exécuter la requête SQL et la mettre dans une variable de l'objet
  • $this->result = @mysql_query($sql,$this->link);
  • //echo gettype($this->result) . "<br>";
  • if (!$this->result) {
  • $this->error = mysql_error($this->link);
  • $this->error_no = mysql_errno($this->link);
  • $str_error = "attention, requête SQL impossible à réaliser... <br>";
  • $str_error .= "Code : " . $this->error_no . "<br>";
  • $str_error .= "Message d'erreur : " . $this->error . "<br>";
  • throw new MyException($str_error);
  • }
  • else {
  • // traiter la variable $this->result
  • // uniquement si la requête commence par un select ...
  • if (!$this-> search_Select($sql)) {
  • // echo "requête SQL exécutée... <br>";
  • }
  • else {
  • // traitement de la requête SELECT
  • $this->true_select = TRUE;
  • // changer la valeur de l'attribut true_select pour permettre les traitements sur le résultat de la requête ...
  • }
  • }
  • }
  • }
  • private function search_Select($value) {
  • // return true si la requête SQL commence par le mot select
  • if ( ereg("^(select|SELECT)",$value) ) {
  • return true;
  • }
  • else {
  • return false;
  • }
  • }
  • // récupérer le nombre d'enregistrements
  • public function getNumRows(){
  • if ( $this->true_select == TRUE ) {
  • $this->numrows = @mysql_num_rows($this->result);
  • return $this->numrows;
  • }
  • else {
  • return "pas de valeur";
  • }
  • }
  • // récupérer le nombre d'enregistrements
  • public function getNumFields(){
  • if ( $this->true_select == TRUE ) {
  • $this->numfields = @mysql_num_fields($this->result);
  • return $this->numfields;
  • }
  • else {
  • return "pas de valeur";
  • }
  • }
  • // récupérer les valeurs des champs
  • public function getDatas() {
  • if ( $this->true_select == TRUE ) {
  • $tab_array = array();
  • @mysql_data_seek($this->result,0); // remettre le pointeur au début du résultat
  • while ( $list = @mysql_fetch_assoc($this->result) ) {
  • $tab_array[] = $list;
  • }
  • $this->array_datas = $tab_array;
  • unset($list);
  • unset($tab_array);
  • return $this->array_datas;
  • }
  • else {
  • return "pas de valeur";
  • }
  • }
  • // récupérer les noms des champs
  • public function getFields() {
  • if ( $this->true_select == TRUE ) {
  • $tab_array = array();
  • @mysql_data_seek($this->result,0); // remettre le pointeur au début du résultat
  • $list = @mysql_fetch_assoc($this->result);
  • foreach($list as $key=>$value) {
  • $tab_array[] = $key;
  • }
  • $this->array_fields= $tab_array;
  • unset($list);
  • unset($tab_array);
  • return $this->array_fields;
  • }
  • else {
  • return "pas de valeur";
  • }
  • }
  • // récupérer les noms des champs
  • public function getSimpleDatas() {
  • if ( $this->true_select == TRUE ) {
  • $tab_array = array();
  • @mysql_data_seek($this->result,0); // remettre le pointeur au début du résultat
  • if ( $this->numfields == NULL ) {
  • $this->numfields = getNumFields();
  • }
  • while( $list = @mysql_fetch_array($this->result) ) {
  • $string = "";
  • for ($i=0; $i < $this->numfields; $i++) {
  • $string .= $list[$i] . " ";
  • }
  • $tab_interm = explode(" ",trim($string));
  • $tab_array[] = $tab_interm;
  • }
  • $this->array_fields= $tab_array;
  • unset($list);
  • unset($tab_array);
  • return $this->array_fields;
  • }
  • else {
  • return "pas de valeur";
  • }
  • }
  • // fonctions pour récupérer les erreurs
  • public function getError() {
  • return $this->error;
  • }
  • public function getNoError() {
  • return $this->error_no;
  • }
  • // forcer la libération des ressources
  • public function toResultFree() {
  • if ( $this->true_select == TRUE ) {
  • @mysql_free_result($this->result);
  • }
  • else {
  • echo "pas de valeur";
  • }
  • }
  • //Utilisation des fonctions propres pour récupérer la valeur d'un attribut
  • // par exemple récupérer le nom du serveur Mysql
  • public function getServer() {
  • return $this->server;
  • }
  • // modifier le nom du serveur
  • public function setServer($nameserver) {
  • $this->server = $nameserver;
  • }
  • // normalement il est préférable de rendre les attributs importants en private pour ne pas les modifier constamment
  • // il existe une méthode __set() appelée à chaque fois que l'on veut modifier directement un attribut sans passer par le setter
  • public function __set($nom,$valeur) {
  • $str = "Vous avez voulu modifier l'attribut " . $nom . " avec la valeur " . $valeur . ".<br>";
  • $str .= "Utilisez de préférence les fonctions Setter prévues à cet effet. <br>";
  • throw new MyException($str);
  • }
  • // de même pour la fonction __get appelée à chaque fois que l'on veut lire directement un attribut
  • public function __get($nom) {
  • $str = "Vous avez voulu lire l'attribut " . $nom . ".<br>";
  • $str .= "Utilisez de préférence les fonctions Getter prévues à cet effet. <br>";
  • throw new MyException($str);
  • }
  • // même chose pour l'appel de méthodes inexistantes (non prévues dans la classe)
  • public function __call($nom,$valeur) {
  • $str = "Vous avez voulu appeler la méthode " . $nom . " avec l'argument " . $valeur . ".<br>";
  • $str .= "Sorry, il n'a pas de méthode avec ce nom; consultez la définition de la classe. <br>";
  • throw new MyException($str);
  • }
  • // getter pour retourner le contenu du tableau array_config
  • public function getArray_config() {
  • return $this->array_config;
  • }
  • // créer le destructeur
  • public function __destruct() {
  • mysql_close($this->link); // on ferme la connexion au serveur mysql
  • }
  • // la méthode appelée directement si on veut faire un echo ou un print
  • public function __tostring() {
  • return "vous ne pouvez pas afficher l'objet directement...<br>";
  • }
  • } //fin classe
  • //***************************************************************
  • //***************************************************************
  • // UTILISATION DE LA CLASSE
  • //error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);
  • // pour ne pas afficher les erreurs de warning ...
  • //création de l'objet
  • try {
  • $obj = new myconnect("localhost","root","","testbase");
  • $marequete = "SELECT * FROM test";
  • $obj->toQuery($marequete);
  • // illustration des méthodes __set, __get, __call
  • //$obj->server;
  • //$obj->server = "hpph.net";
  • //$obj->mamethode('hello');
  • echo gettype($obj->getArray_config()) . "<br>";
  • foreach ($obj->getArray_config() as $key=>$value) {
  • echo $key . " : " . $value . "<br>";
  • }
  • }
  • catch (MyException $e) {
  • // affichage des erreurs si nécessaire
  • echo $e->getSummary();
  • }
  • ?>
<?php
// classe standard Exception de PHP5
// gestion des erreurs avec une classe personnelle héritant de la classe générique Exception
// un rappel
/* 
classe Exception
class Exception {
	private $message;
	private $code;
	private $line;
	private $file;
public function __construct($message,$code = NULL) {
$this->message = $message;
$this->code = $code;
}
// méthode getMessage pour récupérer le message d'erreur ...
public function getMessage() {
return $this->message;
}
public function getCode() {
return $this->code;
}
public function getFile() {
return $this->file;
}
public function getLine() {
return $this->line;
}
}
*/

//*************************************************************************
//définition d'une classe personnelle de gestion des erreurs
class MyException extends Exception {
// ma classe MyException hérite de la classe générique Exception

//les attributs hérités de la classe Exception
protected $message;
protected $file;
protected $code;
protected $line;

// définition du constructeur
public function __construct($msg) {
// on associe le constructeur de la classe générique à celui de cette classe personnelle
parent::__construct($msg);
// possibilité d'envoyer un mail directement à l'administrateur pour l'avertir de l'erreur
// ou encoder dans un fichier log ...
// à vous de voir
}

private function getTime() {
return date('d-m-Y H:i:s');
// récupérer la date du serveur lorsqu'on lance l'exception
}

public function getSummary() {
// méthode à appeler pour afficher l'erreur
$str = "une exception a été générée: <br>";
$str .= "<strong>Le message : " . $this->getMessage() . "</strong><br>";
$str .= "Nom du fichier : " . $this->getFile() . "<br>";
$str .= "Ligne du script : " . $this->getLine() . "<br>";
$str .= "Erreur exécutée le : " .$this->getTime() . "<br>";
return $str;
}

public function __tostring(){
// si appel direct de l'objet pour impression
return $this->getSummary();
}

}


// définition de la classe
class myconnect {
// déclaration des attributs
	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
	
	private $array_config; // tableau regroupant tous les attributs de la configuration mysql

	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){
// assigner les attributs de l'objet avec les variables que je vais transmettre en argument
	
	// tester le nombre d'arguments que l'on passe
	// func_num_args() qui permet de calculer le nombre d'arguments d'une fonction 
	// func_get_args() permet de récupérer un array avec tous les arguments du constructeur
	$this->nb_arg_construct = func_num_args();
	if ( $this->nb_arg_construct != 4 ) {
	$str_error = "sorry, le nombre de paramètres transmis est incorrect<br>"; 
	$str_error .= "5 paramètres obligatoires <br>";
	throw new MyException($str_error);
	}
	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
	
	// compléter le tableau array_config
	$this->array_config['server'] = $this->server;
	$this->array_config['user'] = $this->user;
	$this->array_config['password'] = $this->password;
	$this->array_config['database'] = $this->database;
	
	// 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);
	$str_error = "sorry, connexion impossible à Mysql <br>";
	$str_error .= "Code : " . $this->error_no . "<br>";
	$str_error .= "Message d'erreur : " . $this->error . "<br>";
	throw new MyException($str_error);
			}
		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);
		$str_error = "sorry, base de données impossible à sélectionner <br>";
		$str_error .= "Code : " . $this->error_no . "<br>";
		$str_error .= "Message d'erreur : " . $this->error . "<br>";
		throw new MyException($str_error);
		}
		
	}

} //fin if test arguments
} //fin constructeur


// créer une méthode publique qui va me permettre d'exécuter une requête SQL
public function toQuery($sql) {
	if (func_num_args() != 1) {
	$str_error =  "attention, un seul argument pour cette fonction ...<br>";
	throw new MyException($str_error);
	}
	else {
	// exécuter la requête SQL et la mettre dans une variable de l'objet
	$this->result = @mysql_query($sql,$this->link);
	//echo gettype($this->result) . "<br>";
	if (!$this->result) {
	$this->error = mysql_error($this->link);
	$this->error_no = mysql_errno($this->link);
		$str_error = "attention, requête SQL impossible à réaliser... <br>";
		$str_error .= "Code : " . $this->error_no . "<br>";
		$str_error .= "Message d'erreur : " . $this->error . "<br>";
		throw new MyException($str_error);
		}
		else {
		// traiter la variable $this->result
		// uniquement si la requête commence par un select ...
			if (!$this-> search_Select($sql)) {
			// echo "requête SQL exécutée... <br>";
			}
			else {
			// traitement de la requête SELECT
			$this->true_select = TRUE;
			// changer la valeur de l'attribut true_select pour permettre les traitements sur le résultat de la requête ...
			}
		}
	}
}

private function search_Select($value) {
// return true si la requête SQL commence par le mot select
if ( ereg("^(select|SELECT)",$value) ) {
return true;
}
else {
return false;
}
}

// récupérer le nombre d'enregistrements
public function getNumRows(){
if ( $this->true_select == TRUE ) {
$this->numrows =  @mysql_num_rows($this->result);
return $this->numrows;
}
else {
return "pas de valeur";
}
}

// récupérer le nombre d'enregistrements
public function getNumFields(){
if ( $this->true_select == TRUE ) {
 $this->numfields = @mysql_num_fields($this->result);
return $this->numfields;
}
else {
return "pas de valeur";
}
}

// récupérer les valeurs des champs
public function getDatas() {
if ( $this->true_select == TRUE ) {
$tab_array = array();
@mysql_data_seek($this->result,0); // remettre le pointeur au début du résultat
 while ( $list = @mysql_fetch_assoc($this->result) ) {
 $tab_array[] = $list;
  }
  $this->array_datas = $tab_array;
  unset($list);
  unset($tab_array);
return $this->array_datas;
}
else {
return "pas de valeur";
}
}

// récupérer les noms des champs
public function getFields() {
if ( $this->true_select == TRUE ) {
$tab_array = array();
@mysql_data_seek($this->result,0); // remettre le pointeur au début du résultat
$list = @mysql_fetch_assoc($this->result);
foreach($list as $key=>$value) {
$tab_array[] = $key;
}
$this->array_fields= $tab_array;
unset($list);
unset($tab_array);
return $this->array_fields;
}
else {
return "pas de valeur";
}
}

// récupérer les noms des champs
public function getSimpleDatas() {
if ( $this->true_select == TRUE ) {
$tab_array = array();
@mysql_data_seek($this->result,0); // remettre le pointeur au début du résultat

if ( $this->numfields == NULL ) {
$this->numfields = getNumFields();
}

while( $list = @mysql_fetch_array($this->result) ) {

$string = "";
for ($i=0; $i < $this->numfields; $i++) {
$string  .= $list[$i] . " ";	
}
$tab_interm = explode(" ",trim($string));
$tab_array[] = $tab_interm;
}
$this->array_fields= $tab_array;
unset($list);
unset($tab_array);
return $this->array_fields;
}
else {
return "pas de valeur";
}
}

// fonctions pour récupérer les erreurs
public function getError() {
return $this->error;
}
public function getNoError() {
return $this->error_no;
}

// forcer la libération des ressources
public function  toResultFree() {
if ( $this->true_select == TRUE ) {
@mysql_free_result($this->result);
}
else {
echo "pas de valeur";
}
}

//Utilisation des fonctions propres pour récupérer la valeur d'un attribut
// par exemple récupérer le nom du serveur Mysql
public function getServer() {
return $this->server;
}
// modifier le nom du serveur
public function setServer($nameserver) {
$this->server = $nameserver;
}
// normalement il est préférable de rendre les attributs importants en private pour ne pas les modifier constamment
// il existe une méthode __set() appelée à chaque fois que l'on veut modifier directement un attribut sans passer par le setter
public function __set($nom,$valeur) {
$str = "Vous avez voulu modifier l'attribut " . $nom . " avec la valeur " . $valeur . ".<br>";
$str .= "Utilisez de préférence les fonctions Setter prévues à cet effet. <br>";
throw new MyException($str);
}
// de même pour la fonction __get appelée à chaque fois que l'on veut lire directement un attribut
public function __get($nom) {
$str = "Vous avez voulu lire l'attribut " . $nom . ".<br>";
$str .= "Utilisez de préférence les fonctions Getter prévues à cet effet. <br>";
throw new MyException($str);
}

// même chose pour l'appel de méthodes inexistantes (non prévues dans la classe)
public function __call($nom,$valeur) {
$str = "Vous avez voulu appeler la méthode " . $nom . " avec l'argument " . $valeur . ".<br>";
$str .= "Sorry, il n'a pas de méthode avec ce nom; consultez la définition de la classe. <br>";
throw new MyException($str);
}



// getter pour retourner le contenu du tableau array_config
public function getArray_config() {
return $this->array_config;
}

// créer le destructeur
public function __destruct() {
	mysql_close($this->link); // on ferme la connexion au serveur mysql
}

// la méthode appelée directement si on veut faire un echo ou un print
public function __tostring() {
	return "vous ne pouvez pas afficher l'objet directement...<br>";
	}

} //fin classe

//***************************************************************
//***************************************************************
// UTILISATION DE LA CLASSE
//error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);
// pour ne pas afficher les erreurs de warning ...

//création de l'objet
try {
$obj = new myconnect("localhost","root","","testbase");
$marequete = "SELECT  * FROM test";
$obj->toQuery($marequete);
// illustration des méthodes __set, __get, __call
//$obj->server;
//$obj->server = "hpph.net";
//$obj->mamethode('hello');
echo gettype($obj->getArray_config()) . "<br>";
foreach ($obj->getArray_config() as $key=>$value) {
echo $key . " : " . $value . "<br>";

}
}
catch (MyException $e) {
// affichage des erreurs si nécessaire
echo $e->getSummary();
}
?>

Commentaires et avis

signaler à un administrateur
Commentaire de FhX le 04/05/2006 13:33:47

Classe trop lente et mal exploitée.

Supprimer les accès __get() et __set() n'est pas vraiment approprié.
Trop de propriétés en début de classe qui ne servent à rien.
Un code un peu trop lourd :)

Voila =)

signaler à un administrateur
Commentaire de hpph le 04/05/2006 14:39:55

c'était surtout pour illustrer la théorie concernant les classes en php5 avec mes étudiants
chacun prendra ce qui l'intéresse ...
ben voilà ...
A+

signaler à un administrateur
Commentaire de malalam le 04/05/2006 16:35:51 administrateur CS

Hello,

je suis plutôt d'accord avec FhX. La théorie objet PHP5 ne fait pas fie de l'optimisation (quoi qu'en pense certains vu la rapidité de la POO PHP5... ;-) ).

En fait, il y a pas mal de choses qui me gêne dans cette classe, surtout si c'est pour montrer à des débutants, qui plus est.

Trop de propriétés, certes. Trop de méthodes aussi. Passer par une méthode getTime() pour aficher une date me semble un peu poussé. Idem pour getSummary. __toString est là pour générer du html, alors pourquoi lui faire récupérer le html généré par une tierce méthode ?Il peut le générer lui-même.

Pourquoi passer par des tableaux, pous stocker les résultats de tes divers types de requêtes ?
-Tu parcours les résultats de ta requête
- tu stockes dans un tableau (dans le meilleur des cas, quand tu ne repasses pas par des boucles)
- tu retournes un tableau...qu'il faudra de nouveau parcourir pour en exploiter le contenu! Perte de temps et d'efficacité.
Quant au retour de type string...me semble pas très orienté philosophie objet ça ;-) Je ne m'attends pas à avoirt une méthode qui me renvoie return 'pas de résultat';...

Tu n'exploites pas les comparaisons typées, plus pratiques, plus sûres, plus rigoureuses, et plus rapides.

Ca manque de tests, sur la validité de la ressource utilisée par exemple, entre autres. Et puis, on a un tas de @... non exploités, alors qu'on a une classe d'exceptions à disposition.

Même remarque que FhX pour __set et __get.
Je veux dire, j'aurais plutôt essayé de montrer à mes élèves comment les utiliser...plutôt que comment NE PAS les utiliser, ça me semble plus logique lol.


J'préfère <br /> à <br> mais bon...

Bref...l'idée est bonne, l'intention louable, mais mal exploitée à mon sens.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Connection mysql avec php5 [ par Chess0 ] Bonjour, j'ai install&#233; r&#233;cemment la derni&#232;re version de mysql ainsi que la derni&#232;re version de php (5). J'ai essay&#233; la connec Connection SQL [ par MAsterC ] Salut,Je sais que c'est possible de faire ceci, j'aimerai savoir si quelque saurait comment faire pour savoir si on est capable d'&#233;tablir un conn Mysql : verifier si on peut se connect [ par zeppo4268 ] Bjr, je voudrais savoir comment verifier si on peut se connecter a la base mysql car mon hebergeur &#224; quelque fois des prob mysql donc ma page d'a Problème d'envoi de données [ par The_magicien ] Bonjour, je souhaiterais, avec le code ci-dessous, envoyer des donn&#233;es sur base de donn&#233;es suivant le cas saisi par un formulaire pr&#233;c& connection simultanne a mysql [ par fmf ] est il possible de se connecter simultanement a 2 bases de donnees mysql??ou bien faut il a chaque requete se connecter, se deconnecter et se reconnec Retour des données d'une classe MySQL [ par Jerem_ ] Salut, Depuis ce matin, j'asseye de coter une classe MySQL pour mon site. La classe marche tr&#232;s bien quand je fait une requete INSERT, etc .. M Connexion à deux tables dans une page [ par The_magicien ] Bonjour, je souhaiterais faire une page o&#249; il y a des "mouvements de donn&#233;es" entre bases de donn&#233;es mais le probl&#232;me c'est que la Problème d'un script [ par stu76 ] Bonsoir,J'ai &#233;cris un petit script qui me permet d'afficher les &#233;l&#232;ves stocker dans une base de donn&#233;es. Mon prob est que l'affich Help !!! probleme de connection BDD et affichage dans une pasge php [ par chapata ] Bonjour a tous,J'ai installer EasyPHP en d&#233;but de semaine et je me suis mit depuis peu aux BDD&nbsp;(mysql et php), et j'ai une question pour vou DATE() avec php-mysql [ par nino69 ] Bonjour, je d&#233;sire enregistrer la date du jour dans ma base mysql: $date=date("YMD");$query_jet_connection ="INSERT INTO jet_connection VALUES ('


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,484 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.