Page 1 sur 3

Probléme avec la creation des classes

Posté : 08 oct. 2010, 16:11
par hiker
Bonjour! :shock:
Je débute en programmation orienté sous php et j'aimerais savoir s'il existe un répertoire particulier ou il faut placer les fichier .class car j'arrive pas à créer mes objets

Re: Probléme avec la creation des classes

Posté : 08 oct. 2010, 16:19
par AoSiX
Non tu les crées ou tu veux, et tu les inclus ;)

Re: Probléme avec la creation des classes

Posté : 08 oct. 2010, 16:55
par Cyrano
Non tu les crées ou tu veux, et tu les inclus ;)
Je prends la liberté de rajouter quand même quelques détails.

La POO, c'est surtout avec un but pratique pour ne pas avoir à ré-écrire certains codes génériques qu'on retrouve souvent quelle que soit l'application en cours de développement. Avec le temps, on en arrive donc à se poser des questions sur l'architecture logicielle, comment répartir les fichiers, selon quels critères doit-on mettre tel ou tel fichier dans tel ou tel répertoire, comment les nommer, tant les fichiers que les répertoires d'ailleurs.

Donc, pour reprendre la réponse faite par AoSiX, tu crée les répertoires selon ton inspiration du moment, mais je t'encourage à réfléchir à cette question de portabilité. Imagine par exemple que des classes que tu écris devront pouvoir être réutilisées à l'avenir lorsque tu attaqueras un autre projet : il sera plus facile de copier un seul répertoire contenant toutes tes classes pour l'insérer dans l'architecture du futur projet que de devoir les récupérer ici et là à travers plein de répertoires.

En résumé, je suggère la création d'un répertoire « librairie » à la racine de ton projet, et dedans tu ne mettras QUE des classes génériques, pas de code spécifique à une application donnée. Il ne faudrait en effet pas devoir y faire un ménage quelconque lorsque tu voudras l'utiliser à nouveau dans une autre projet.

Re: Probléme avec la creation des classes

Posté : 08 oct. 2010, 18:42
par hiker
Plus explicitement je m'explique.
J'ai installé mes serveurs(web et mysql) sous un redhat ayant une adresse statique 10.xx.xx.xx et dans le repertoire /var/www/html je place les fichiers de connexion à la base de donnée en me basant sur l'exemple suivant : posting.php?mode=reply&f=29&t=255490
C'est trois fichiers sont les suivants

Code : Tout sélectionner

<?php /* Fichier : SGBD.class.php elle nous permettra de nous connecter au serveur*/ class SGBD { var $SGBD_login; // Attribut du login du SGBD var $SGBD_password; // Attribut du password du SGBD var $SGBD_host; // Attribut de l'hôte du SGBD var $SGBD_base; // Attribut du nom de la base de données var $connect; // Attribut de connection var $requete; // Attribut de requête //------------------------------------------------------------------------------------------ // Définition du constructeur //------------------------------------------------------------------------------------------- function SGBD ($login, $password, $host, $base) { // Vérification des variables if (empty ($login) || empty ($host) || empty ($base)) { // Affichage du message d'erreur echo "<b>Erreur :</b> Une ou plusieurs variable(s) n'ont pas été renseigné."; exit; }else { // Initialisation des attributs $this->SGBD_login = $login; $this->SGBD_password = $password; $this->SGBD_host = $host; $this->SGBD_base = $base; } } } //----------------------------------------------------------------------------------------------------- // Definition de la fonction de connexion ///---------------------------------------------------------------------------------------------------- function connect() { // Connection à MySQL $connect = mysql_pconnect($this->SGBD_host, $this->SGBD_login, $this- >SGBD_password); // Vérification de la connection if(!$connect) { // Affichage du message d'erreur echo "<b>Erreur :</b> Connection à MySQL impossible."; exit; }// Connection à la base de données if (!mysql_select_db($this->SGBD_base, $connect)) { // Affichage du message d'erreur echo "<b>Erreur :</b> Connection à la base de données impossible."; exit; }// Initialisation de l'attribut de connection $this->connect = $connect; } //---------------------------------------------------------------------------------------------------- //Fonction permettant d'executer des requetes //---------------------------------------------------------------------------------------------------- function requete ($requete) { // Exécution de la requête $result = mysql_query($requete, $this->connect); // Vérification de la requête if (!$result) { // Affichage du message d'erreur echo "<b>Erreur :</b> Impossible d'effectuer la requête au serveur."; exit; }else { // Initialisation de l'attribut de requête $this->requete = $result; } } //----------------------------------------------------------------------------------------------------------- //Fonction de deconnexion //----------------------------------------------------------------------------------------------------------- function deconnect() { // Déconnection de la base de données mysql_close($this->connect); } ?>

Code : Tout sélectionner

<?php //-------------------------------------------------------------------------------- //---Fichier : MySQL.SGBD.class.php Création de la classe fille //-------------------------------------------------------------------------------- class MySQL extends SGBD { // Méthode connect() function connect() { // Connection à MySQL $connect = mysql_pconnect ($this->SGBD_host, $this->SGBD_login, $this->SGBD_password); // Vérification de la connection if(!$connect) { // Affichage du message d'erreur echo "<b>Erreur :</b> Connection à MySQL impossible."; exit; } //Connection à la base de données if(!mysql_select_db($this->SGBD_base, $connect)) { // Affichage du message d'erreur echo "<b>Erreur :</b> Connection à la base de données impossible.";exit; } // Initialisation de l'attribut de connection $this->connect = $connect; } // Méthode requete() function requete ($requete){ // Exécution de la requête $result = mysql_query($requete, $this->connect); // Vérification de la requête if(!$result){ // Affichage du message d'erreur echo "<b>Erreur :</b> Impossible d'effectuer la requête au serveur."; exit; }else{ // Initialisation de l'attribut de requête $this->requete = $result; } } // Méthode deconnect() function deconnect(){ // Déconnection de la base de données mysql_close($this->connect); } } ?>

Code : Tout sélectionner

<html> <body> <?php echo phpversion(); /* Fichier : SGBD.php */ // Inclusion de la classe mère include ("SGBD.class.php"); /* Initialisation de la variable du SGBD correspondant */ $SQL = "MySQL"; // Inclusion de la classe fille du SGBD correspondant include ($SQL.".SGBD.class.php"); /* Création d'un nouvel objet de la classe fille + lancement du constructeur */ $database = new $SQL('root', 'zainroot', '10.16.3.92', 'test'); // Connection à la base de données $database->connect(); $database->requete("CREATE DATABASE newBase7"); // Déconnection de la base de données $database->deconnect(); ?> </body> </html>

Cependat la base de donnée n'est pas crée :roll: :roll:

j'utilise php 5.1.6
mysql 5.xx

Re: Probléme avec la creation des classes

Posté : 08 oct. 2010, 18:51
par Cyrano
Et tu n'as aucun message d'erreur ?

Re: Probléme avec la creation des classes

Posté : 08 oct. 2010, 18:54
par hiker
aucuns messages

Re: Probléme avec la creation des classes

Posté : 08 oct. 2010, 18:54
par stealth35
t'es sur de ca : new $SQL ?

Re: Probléme avec la creation des classes

Posté : 08 oct. 2010, 18:56
par hiker
Tu as autre chose à me proposer?

Re: Probléme avec la creation des classes

Posté : 08 oct. 2010, 18:57
par Cyrano
t'es sur de ca : new $SQL ?
Bien vu ça aussi, fais donc directement new MySQL() avec tes paramètres.

Re: Probléme avec la creation des classes

Posté : 08 oct. 2010, 18:58
par hiker
je teste et je reviens deux second

Re: Probléme avec la creation des classes

Posté : 08 oct. 2010, 19:05
par hiker
j'ai essayé ça

Code : Tout sélectionner

<html> <body> <?php echo phpversion(); /* Fichier : SGBD.php */ // Inclusion de la classe mère include ("SGBD.class.php"); /* Initialisation de la variable du SGBD correspondant */ //$SQL = "MySQL"; // Inclusion de la classe fille du SGBD correspondant include ($MySQL.".SGBD.class.php"); /* Création d'un nouvel objet de la classe fille + lancement du constructeur */ $database = new $MySQL('root', 'zainroot', '10.16.3.92', 'test'); // Connection à la base de données $database->connect(); $database->requete("CREATE DATABASE newBase7"); // Déconnection de la base de données $database->deconnect(); ?> </body> </html>

Re: Probléme avec la creation des classes

Posté : 08 oct. 2010, 19:13
par Cyrano
Et... ?

Re: Probléme avec la creation des classes

Posté : 08 oct. 2010, 19:16
par hiker
:shock: ca fonctionne toujours pas

Re: Probléme avec la creation des classes

Posté : 08 oct. 2010, 19:24
par stealth35
:shock: ca fonctionne toujours pas
qu'est ce qui ne fonctionne pas ? t'as une erreur ? t'as les erreurs d'activées au moins ?

Re: Probléme avec la creation des classes

Posté : 08 oct. 2010, 19:26
par hiker
Comment on les activent?