JeuWeb - Crée ton jeu par navigateur
[Résolu] Recherche une fonction retournant les méthodes d'un objet - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Recherche une fonction retournant les méthodes d'un objet (/showthread.php?tid=3438)



[Résolu] Recherche une fonction retournant les méthodes d'un objet - P0ulp0r - 26-01-2009

Yop tous,

Voilà, actuellement je suis en train d'essayer de créer une classe mère qui va s'occuper d'effectuer toutes les relations identiques des classes filles avec la bdd (update, delete drop etc).

Voici le code actuel de la classe mère :
Code PHP :
<?php 
/**
* Classe qui va gérer toutes les liaisons avec la BDD
* @author P0ulp0r
* @version 1.0
*/
abstract class table {

// les variables
protected $table;
protected
$tablePrimaryKey;
protected
$data;

/**
* Constructeur
* @param String : $nomTable // nom de la table
* @param String : $primaryKey // nom de la clé primaire
*/
public function table ($nomTable, $primaryKey, $object) {
$this->table = $nomTable;
$this->tablePrimaryKey = $primaryKey;
$this->data = $object;
}

/**
* Méthode qui va droper une table
* @param String : $nomTable
* @return boolean
*/
public function drop () {
mysql_query("DROP TABLE " . $this->table . " ");
}

/**
* Méthode qui va delete un tuple
* @param int : $id
* @return boolean
*/
public function delete(t) {
mysql_query("DELETE FROM `" . $this->table . "` WHERE `" .
$this->tablePrimaryKey . "` = '" . [b]//!\\ ici récupérer le méthode getIdPays //!\\[/b] . "'");

// vérification du delete
if(mysql_affected_rows() >= 1)return true;
else return
false;
}

Et celui d'une des classes filles :
Code PHP :
<?php 
class paysDAO extends table{

/**
* Constructeur de la table
*/
function paysDAO($object) {
// équivalent du super()
parent::table("pays", "idPays", $object);
}
}

Maintenant le code d'un de l'un des objets, ici pays :
Code PHP :
<?php 
class pays {

private
$idpays;
private
$nom;

/**
* Constructeur de pays
*/
function pays($id, $nom) {
$this->idPays = $id;
$this->nom = $nom
}

/**
* retourne la valeur de idPays
*/
public function getIdPays() {
return
$this->idPays;
}

/**
* modifie l'id du pays
*/
public function setIdPays($id) {
$this->idPays = $id;
}

/**
* retourne le nom du pays
*/
public function getnom() {
return
$this->nom;
}

/**
* modifie le nom du pays
*/
public function setIdPays($nom) {
$this->nom = $nom;
}


}
Donc je voudrais connaître différentes fonctions pouvant me réaliser cela :
- une qui retourne les méthodes d'une instance
- une qui retourne les attributs d'une instance

Ce qui va me permettre de créer une classe mère qui pourra effectuer des actions sans pour autant connaître les méthodes et attributs des objets.
Car celle ci ira les chercher via l'objet envoyé en paramètre, ce qui me fait gagner énormément en souplesse et quantité de lignes de code.

Donc en faisant cette ligne de code suivante, envoyer l'objet pays, pour ensuite faire les différentes actions dans ma classe mère (ici un delete).
Code PHP :
<?php 
$paysDAO
= new paysDAO($objetDeLaClassePays);
$paysDAO->delete();

Tout cela me permettra de diminuer le nombre de lignes de codes et d'être très souple Smile

Donc remplacer la ligne de code suivante que j'ai mis en standby dans la méthode delete:
Code PHP :
<?php 
[b]//!\\ ici récupérer le méthode getIdPays //!\\[/b]

par une fonction qui me permet de récupérer le nom de la méthode dont j'ai besoin, ici pour cet objet c'est "getIdPays".

Je sais pas si je suis très clair. :/

Merci.
P0ulp0r
Finalement j'ai trouvé la solution.
En faisant une recherche plus poussée, je suis tombé sur la réflexion que je ne connaissais pas et du coup ca marche nikel.

Voici quelques liens qui m'ont aidé et qui peuvent servir :
http://fr.php.net/manual/fr/language.oop5.reflection.php#language.oop5.reflection
http://www.dator.fr/php-et-comment-recuperer-les-informations-dune-classe-fille-dans-une-classe-parente/

Voilà une bonne chose de fait Smile