Classe en PHP - explication
Par karando, dimanche 12 novembre 2006 à 04:15 :: PHP - Classe :: #18 :: rss
Donc j'ai fait un test dans une classe avec un $GLOBALS "variable" ;
Apres quelque test : voir l'article Sans Globals
donc voici ce que j'ai fais: j'ai une methode de ma classe qui a besoin d'un objet d'une autre classe j'ai mis pour recuperer l'objet que j'ai fait un : $GLOBALS"ptobj_objet"->methodedemonobjet ca passe mais je me demandais si cela ne poserai pas des problemes dans la construction des classes. J'avais pris pour habitude de faire une fonction dans chacune des classes afin de lui passer l'objet correctement
function Cfct_set_value($name,$value)
{
$this->$name = $value;
}
$obj->Cfct_set_value("obj_nameclasse",$obj_nameclasse);
Cette methode est propre mais tres contraignante car il faut toujours passer les objet au element que l'on a besoin.
Par exemple pour ma part pour un des projets j'ai une classe C_formulaire qui depend de C_texte qui se fait appeler d'une classe C_form_modele.
Depuis la classe C_form_modele j'ai besoin d'une methode de C_formulaire.
Mais je n'ai pas d'heritage sur la classe C_texte de C_formulaire. j'ai une creation de classe dans la C_texte de la classe C_formulaire. Donc pour pouvoir avoir acces a la classe C_formulaire il faut a chaque fois definir
$this->obj_texte->obj_formulaire->methodeC_formulaire();
c'est je pense une methode assez lourde surtout quand je forme mes formulaire a partir de la C_form_modele et que tous mes elements de formulaire sont dans la c_formulaire.
<?php class C_formulaire { function C_formulaire() { } function MethodeC_formulaire() { echo "toto"; } } class C_texte { function C_texte() { $this->obj_formulaire = new C_formulaire(); } } class C_form_modele { function C_form_modele() { } function methodeC_form_modele() { $this->obj_texte = new C_texte(); //tout ca pour afficher toto $this->obj_texte->obj_formulaire->MethodeC_formulaire(); } } $obj_form_modele = new C_form_modele(); $obj_form_modele->methodeC_form_modele(); ?>
Bon je les ai simplifier car il y a des heritages d'autre classe sur chacune, (au passage on fait comment un heritage multiple?) et plein d'autre methode bien sur
Donc je me disais avec la methode des $GLOBALS il suffit de creer une bonne fois pour toute toutes mes classes en haut de page et apres il me reste plus qu'a faire des $GLOBALS mais je pense a un double tranchant je vois pas encore lequel mais il va y en avoir un. Parce que je le vois rarement dans les sources que je recupere.
Si quelqu'un connait le probleme qu'il me laisse un message.
Bon je l'utiliserai rarement c'est sur mais c'est vraiment tentant. Enfin mon passage par methode dans les classes je sais que c'est propre mais j'utilise aussi et la je pense que c'est moins propres : $obj->obj_nameclasse = $obj_nameclasse; c'est pas propre mais bon ca marche. mais je dois toujours instancier mes objet de classe en classe ca donne par ce fait:
$this->obj->obj_nameclasse = $this->obj_nameclasse;
Voila, petite parenthese sur les classes maintenant dites moi comment vous procedez vous, car vraiment cela m'interresse.
Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.