Page 1 sur 1
POO, classes de connexion et session
Posté : 13 janv. 2009, 02:46
par Megadeth
Bonjour et tous mes voeux de bonheur à toutes et tous.
Dans mes résolutions de 2009, il y avait me mettre à la POO donc me revoilà après un long silence.
Je voudrais savoir à quoi sert concrètement une classe de connexion et ensuite comment la faire intérargir avec une classe d'objet : membres (par exemple) et gérer le tout via des sessions.
Je ne sais pas si j'ai été super clair dans mes explications...
Mon premier essai c'est soldé par un :
Code : Tout sélectionner
Fatal error: Call to private Connexion::__construct() from invalid context in C:\wamp\www\poo\index.php on line 6
Merci pour les pistes
Mega

Posté : 13 janv. 2009, 08:57
par zeus
Salut
Alors, ton erreur signifie en langage clair que ton code tente d'accéder à la méthode __construct depuis un endroit où ce n'est pas permis.
Visiblement, ton constructeur est privé. Or, le constructeur, c'est le 1er truc appelé quand tu construits un objet et c'est donc forcément en dehors de l'objet. Du coup, le constructeur est obligatoirement public.
Posté : 13 janv. 2009, 10:26
par Megadeth
Merci Zeus, ca faisait un bail !
Je tiens ma source de
http://www.phpcs.com/codes/CLASSE-CONNE ... 42561.aspx
J'ai farfouillé un peu sur le net, mais si tu as une classe plus optimisée je suis preneur pour l'étudier.
Sinon concernant le reste de mes interrogations, tu saurais y répondre :
Je voudrais savoir à quoi sert concrètement une classe de connexion et ensuite comment la faire intérargir avec une classe d'objet : membres (par exemple) et gérer le tout via des sessions.
Megadeth

Posté : 13 janv. 2009, 12:13
par savageman
La classe est dotée d'un Singleton getConnexion($host, $user, $pass, $base) qu'il faut utiliser pour récupérer une connexion valide.

Posté : 13 janv. 2009, 15:36
par Megadeth
Re,
Oui merci mais concernant ceci :
Je voudrais savoir à quoi sert concrètement une classe de connexion et ensuite comment la faire intérargir avec une classe d'objet : membres (par exemple) et gérer le tout via des sessions.
Je veux bien une classe b a ba de connexion (lien ou autre) histoire de bien comprendre, le minimum syndical car celle trouvée semble déjà pas mal élaborée...
Mega

Posté : 13 janv. 2009, 16:06
par fab
Quand il s'agit de base ( et plus ) php.net fait souvent l'affaire
http://fr.php.net/manual/fr/language.oop5.basic.php
Posté : 13 janv. 2009, 16:48
par AB
Visiblement, ton constructeur est privé. Or, le constructeur, c'est le 1er truc appelé quand tu construits un objet et c'est donc forcément en dehors de l'objet. Du coup, le constructeur est obligatoirement public.
Excepté pour les
design patterns Singleton. D'ailleurs on pourrait justement s'inspirer de cet exemple pour faire une classe de connexion
class connect_bdd {
private static $instance;
private function __construct() {
require('fichier_de_connexion.php');
mysql_select_db(...);
}
public static function getInstance() {
if(self::$instance == NULL) self::$instance = new connect_bdd;
}
}
//Connexion depuis n'importe quel endroit de la page en faisant
connect_bdd::getInstance();
Posté : 13 janv. 2009, 16:57
par zeus
Tiens donc, je ne savais pas que les singleton nécessitaient un constructeur privé ...
Il me semblait même qu'il fallait impérativement qu'il soit public pour ne pas avoir de Notice.
Posté : 13 janv. 2009, 17:42
par Hywan
Hey

,
Tu peux avoir un constructeur protégé pour faire un singleton « familiale ». Si tu veux faire un singleton privé, alors ton constructeur doit être privé, ça dépend du contexte où tu veux instancier ta classe. En général, un singleton n'a de sens que dans un contexte privé, donc avec un constructeur privé. Mais ça peut marcher avec un constructeur public, sauf que l'utilisateur va faire ce qu'il veut

.
Posté : 14 janv. 2009, 01:30
par Megadeth
Re,
Oui merci mais concernant ceci :
Je voudrais savoir à quoi sert concrètement une classe de connexion et ensuite comment la faire intérargir avec une classe d'objet : membres (par exemple) et gérer le tout via des sessions.
Je veux bien une classe b a ba de connexion (lien ou autre) histoire de bien comprendre, le minimum syndical car celle trouvée semble déjà pas mal élaborée...
Mega

Sinon lol

à quoi ca sert et quel est l'exemple le plus sommaire que l'on peut avoir ?
Mega

Posté : 14 janv. 2009, 02:32
par AB
L'exemple le plus sommaire, je te l'ai donné plus haut. Tu remarqueras que c'est exactement le même principe (singleton) que le lien que tu avais trouvé mais résumé au strict minimum fonctionnel.
L'avantage de cette class c'est qu'elle ne sera instanciée qu'une fois quelque soit le nombre d'appels que tu feras à la fonction.
Sinon (évidemment) ce n'est pas en faisant une class de connexion que tu comprendras le mieux l'avantage de la poo par rapport au procédural.