8791 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Voila j'ai créé une class pour gérer mes connexions d'utilisateurs mais le probleme n'est pas la. je voudrai juste séparer les variables de connexion à ma base de données du fichier qui contient ma class, mais voila PHP ne l'entend pas comme ça Smiley decu . Voila ce que j'ai codé :


<?php

class manageUser {

include ('class_manageUser_config.php');
/* class_manageUser_config.php contient l'attribution des variables : $this->server, $this->user, $this->pw, $this->base */

function connexion(){
	
	mysql_connect($this->server,$this->user,$this->pw) or die ("erreur de connexion au serveur");
	mysql_select_db($this->base) or die ("erreur de connexion a la base de données");
	}
...

}

?>


Est ce que quelqu'un aurait une astuce ?

Merci
Modifié par Djack_n_Z (07 Jul 2008 - 03:03)
bonsoir Djack_n_z

je crois qu'une petite révision s'impose.

le moyen le plus rapide est de définir dans un fichier 'externe' (ex : config.php)
des 'macros' avec la méthodes define() :


define ('HOSTNAME','localhsot');
define ('USER','utilisateur');
define  ('PASSWD','mot_de_passe');
define ('DB','ma_base');
...etc

les majuscules ne sont pas obligatoires mais une convention d'écriture et une bonne pratique pour la lisibilité de ton code ...

Tu inclus ce fichier à tous fichier qui ont besoin de ses 'définitions'
et que tu instancies par exemples en tant que propriétés de ta classe :


include_once('chemin/vers/config.php');

class manageUser 
{
   // tes variables de classes
   private              $_hostname;
   private              $_user;
   private              $_password;
   private              $_db;

   // ton constructeur
  public function __construct()
  {
     // tu peux ici donner une valeur à tes variables
    $this -> _hostname = HOSTNAME;
    $this -> _user = USER;
    ...etc
  }

// tes méthodes public ou privée de ta classe

}/**end class*/


le modificateur d'acces 'private' n''est pas nécessaire (on peut mettre public) mais à quoi bon utiliser un classe alors ...

pour accéder à ces valeurs privée : soit dans le constructeur , qui les initialise lors de la creations d'un nouvel objet...

: soit via des accesseus (methode get et set)..
exemple :

// fonction publique de ta classe : get
public function getHost()
{
     return $this->_hostname;
}

// un set
public function setHostname($valeur)
{
   $this-> _hostname = $valeur;
}


mais dans ce cas je ne vois pas pourquoi modifier les valeurs de connections en cours de route (c'est juste pour l'exemple)

++
Merci beaucoup à toi kzone de ta réponse si detaillé

En fait je ne souhaite pas modifier les valeurs de connexions en cours de route, c'est juste que je voudrai me créer une biblihotèque de class que je puisse réutilisée pour d'autres sites et que je trouve plus simple de n'avoir qu'a modifier un fichier de config par class.

Merci encore pour toutes ces informations qui me seront très utiles pour encore améliorer la visibilité de mon code. Smiley ravi Smiley ravi Smiley ravi

++