2009-06-23 4 views
0

Je suis en train d'écrire une classe qui a beaucoup de accesseurs et je me demandais ce que les gens pensaient sur les points suivants:code de disposition pour accesseurs

La façon normale est de code comme suit:

public function setChangeSort($changeSort) 
{ 
    self::$changeSort = $changeSort; 
} 

public function getChangeSort() 
{ 
    return self::$changeSort; 
} 

Quelles sont vos opinions sur la manière suivante:

public function setChangeSort($changeSort) { self::$changeSort = $changeSort; } 
public function getChangeSort() { return self::$changeSort; } 

Je n'ai pas problème, il fait le chemin orginal, comme c'est la façon dont il shoul être fait. Il semble juste prendre beaucoup d'espace dans mes fonctions de classe qui sont vraiment évidentes dans ce qu'ils font.

Merci d'avance.

Répondre

5

Les blocs conditionnels d'une ligne conviennent bien s'ils sont cohérents, évidents et intuitifs, bien que je les encourage à les espacer soigneusement de sorte qu'il est immédiatement évident qu'ils sont des fonctions plutôt qu'une seule ligne de code!

+0

Je voudrais également ajouter cohérent comme un troisième qualificateur –

+0

Bien dit! Edité en conséquence. –

+0

Merci, que ce soit de la bonne façon ou pas, j'ai décidé d'utiliser 1 liners car ils ne sont que des getters et setters très simples et j'en ai 18! – Lizard

0

Je pense que les getters/setters magiques de PHP5 sont vraiment utiles quand ils traitent avec de nombreux getters/setters.

http://fr.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.members

Et un exemple.

<?php 
class A { 
    private $properties = array(); 

    public function __set($key, $value) { 
    if (is_array($value)) { 
     $this->$key = $value; 
    } else { 
     $this->properties[$key] = $value; 
    } 
    } 

    public function __get($key) { 
    if (array_key_exists($key, $this->properties)) { 
     return $this->properties[$key]; 
    } 

    return null; 
    } 
} 
?> 
+0

Je me méfie de ces fonctions magiques. J'aime beaucoup faire quelque chose quand quelque chose ne va pas. Cette approche échouerait silencieusement si une propriété n'existait pas. Un code de gestion des erreurs supplémentaire doit être ajouté pour prendre cela en charge. Cette approche est également compliquée si vous devez effectuer une validation sur l'une des propriétés. En raison de ces deux conditions, je trouve que le bénéfice de cette approche est rapidement perdu. –

+0

Ceci serait apprécié en termes de généricité et de réutilisabilité. C'est sympa quand vous voulez avoir un seul et même endroit pour accrocher votre code de validation, ou pour accrocher un système de plugin. –

1

Je voudrais aller avec la variation "d'une ligne". Mais seulement si tout ce qu'il fait est de réglage et d'obtenir une valeur. Si vous ajoutez une vérification pour null ou toute autre validation, ou si vous faites autre chose que d'obtenir ou de définir, j'accepterais la première et la plus longue variation pour que le code soit plus lisible.

1

Je menace généralement les méthodes à une ligne de la même manière que les autres méthodes. Cela ne me dérange pas que mon code source soit N-lignes plus longtemps si cela signifie qu'il est plus lisible et maintenable.

Je voudrais également vous conseil à la caisse le document suivant http://framework.zend.com/manual/en/coding-standard.html à mon humble avis, il est la meilleure référence standard de codage PHP disponible à ce jour.

Questions connexes