Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/08/2011, 15h20   #1
Membre confirmé
 
Avatar de Général03
 
Inscription : avril 2006
Messages : 809
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 809
Points : 220
Points : 220
Par défaut Accés variable d'une classe

Au niveau de la maintenabilité, propreté de codage, temps d'execution, habitude de codage, ... quelle est la meilleur solution ?
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class A {
  private $_var ;
 
    function meth1(){
      $this->_var = 1;
      $this->meth2($this->_var);
    }
 
    function meth2($param){
      if( $param ) ...
    }
}
 
class B {
  private $_var ;
 
  function meth1(){
    $this->_var = 1 ;
    $this->meth2();
  }
 
  function meth2(){
    if( $this->_var ) ...
  }
}
__________________
Mes contributions phares en dev : www.rigaudie.fr
Général03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 16h06   #2
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
J'ai envie de dire que ça dépend.

J'aurais plus tendance à opter pour :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
class C {
  private $_var ;
 
    function meth1(){
      $this->_var = 1;
      $this->_var = $this->meth2($this->_var);
    }
 
    function meth2($param){
      return param
    }
}
Car de cette manière meth2 est plus généraliste et pourra être utiliser pour d'autres chose. Mais encore une fois ca dépend beaucoup de ce que doit faire la méthode.
Si c'est juste modifier une variable membre de la classe bien précise , ca sert à rien de s'embeter avec des arguments et des return
Après niveau performance , argument ou pas c'est pareil (a quelque µs près)
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 16h11   #3
Membre confirmé
 
Avatar de Général03
 
Inscription : avril 2006
Messages : 809
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 809
Points : 220
Points : 220
Je trouve qu'utiliser la classe B est plus brouillon quand celle ci devient importante. Et puis avec la classe A, dans ta méthode tu sais de quoi elle dépend et se qu'elle a besoin pour fonctionner.
__________________
Mes contributions phares en dev : www.rigaudie.fr
Général03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 12h04   #4
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 656
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 656
Points : 5 359
Points : 5 359
Je rejoins l'avis général : ça dépend surtout de ce que doivent faire les méthodes. Par exemple, si ta méthode meth2 est spécifique à une variable donnée, il vaut mieux utiliser la variable directement dedans. En revanche, si on peut l'appliquer à plusieurs variables, il faut lui donner un paramètre et éventuellement faire des méthode spécifiques qui appellent cette méthode générale.

Exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Armoire {
	// nombre de pantalons
	private $_pantalons;
	// nombre de chemises
	private $_chemises;
	// nombre de chaussettes
	private $_chaussettes;
 
	// fonction d'incrémentation générale
	function incrementer($param) {
		return $param + 1;
	}
 
	// on incremente le nombre de chemises
	function incrementerChemises() {
		$this->_chemises = $this->incrementer($this->_chemises);
	}
 
	// on incrémente le nombre de pantalons
	function incrementerPantalons() {
		$this->_pantalons = $this->incrementer($this->_pantalons);
	}
 
	// les chaussettes vont par paires, donc on en ajoute toujours 2
	function incrementerChaussettes() {
		$this->_chaussettes = $this->_chaussettes + 2;
	}
}
ok, c'est pas très intellectuel comme fonctions, mais ça donne une idée assez claire du truc

Ce qui est bien aussi, c'est de passer par des get-setters pour accéder aux variables de classe...
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/08/2011, 12h19   #5
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
salut,

si meth2 est private et en dois être utiliser que dans la classe je ne vois pas pourquoi passer _var en argument sinon comme le dit grunk ça dépend.
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 18h04   #6
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 797
Points : 35 797
[HS]
Citation:
Envoyé par grunk
J'ai envie de dire que ça dépend.
Ca dépasse... forcément
[/HS]
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 12
Vieux 19/08/2011, 09h25   #7
Membre confirmé
 
Avatar de Général03
 
Inscription : avril 2006
Messages : 809
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 809
Points : 220
Points : 220
De manière générale en fonction de vos dires, il faut utiliser une méthode avec argument dans le cas où cette dernière est public ou qu'elle est utilisée pour faire un traitement (merci pour l'exemple Celira)
Dans mon cas j'ai mon constructeur qui initialise ma variable $this->_var, et celle-ci est utilisé dans plusieurs méthodes à des fins de test
__________________
Mes contributions phares en dev : www.rigaudie.fr
Général03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h58.


 
 
 
 
Partenaires

Hébergement Web