Accueil > Refactorisation > Refactoring PHP - Lez. 1: une classe

Refactoring PHP - Lez. 1: une classe

Lorsque nous écrivons chacun de nous utilise une classe de ses conventions.

Je recommande d'utiliser les propriétés suivantes d'une classe:

  • Si compose d'un seul mot, tout en minuscules, par exemple $ nom;
  • Si elle est faite de beaucoup de mots à la première lettre de chacun, de la seconde, en majuscules, en minuscules tous les autres, par exemple $ nomeAziendaItaliana;
  • Si une constante est composée d'un seul mot écrire tout en majuscules, par exemple des éléments;
  • Si nous avons un composé constante de plusieurs mots pour écrire tout en majuscules avec un tiret entre les mots, par exemple ELEMENTI_PER_RIGA
  • Le nom de variable doit être auto-explicatif

Toutes les propriétés d'une classe sont privées et peuvent être accessibles par les méthodes getXXX et setXXX, dont le niveau d'accès doit être public, afin que vous puissiez accéder à l'état interne de l'objet de n'importe quel point. Au lieu de XXX nous avons mis le nom de la propriété.

Ce qui suit est un exemple pour mieux clarifier le concept:

Mauvais Exacte

classe Test {

public $ classname;

private $ mia_x1;

const costante_della_classe;

pages const;

}

classe Test {

private $ className;

private $ miaDataDiNascita;

Const COSTANTE_DELLA_CLASSE;

PAGES const;

fonction publique setNomeClasse ($ nom) {

$ This-> className = $ nom;

}

getNomeClasse fonction publique () {

return $ this-> className;

}

}

Mais parce que nous faisons tout cela? Les propriétés d'une classe représentent l'état de l'instance d'un objet, alors vous devriez être accessibles via le public des méthodes, des députés de déclencher des actions pour le changement.

Un exemple concret est l'ampoule: nous sommes intéressés à leur statut, ou chaud ou froid, mais nous agissons sur lui par des actions sur et / ou hors tension, qui représentent nos méthodes.

En ce qui concerne l'accès aux propriétés en PHP 5, nous utilisons une astuce, grâce à des fonctions magiques peuvent et __get __set.

Si vous ne voulez pas l'utiliser directement dans votre code et les fonctions getXXX setXXX nous pouvons faire comme l'exemple suivant:

classe Test {

private $ _nomeClasse;

__set fonction publique ($ nom, $ valeur) {

call_user_func (array ($ this, 'set' ucwords ($ nom)), $ valeur.);

}

__get fonction publique ($ nom) {

call_user_func (array (cette somme, "get" ucwords ($ nom)).);

}

fonction publique setNomeClasse ($ nom) {

$ This-> nom = $ _nomeClasse;

}

getNomeClasse fonction publique () {

return $ this-> _nomeClasse;

}

}

$ Obj = new test ();

$ Obj-> className = 'test';

echo $ obj-> className;

L'astuce est de suivre une nomenclature de certains dans les noms et fonctions de l'usage magique du langage.

Le nom que nous utilisons dehors de la classe n'est rien de plus que des biens, mais sans le trait de soulignement comme premier caractère. Comme il n'y a pas de variable de classe avec ce nom, PHP __get __set jette ou la fonction, le cas échéant, dans le premier cas, en passant le nom de propriété et de valeur pour être stocké dans le second cas que le nom.

Condition essentielle pour le fonctionnement est le suivant:

  • la variable fictive utilisée en dehors de l'objet suit le bien convenction nommant l'intérieur de la classe, à l'exclusion dell'underscore qui ne devraient pas être présents;
  • méthodes et setXXX getXXX existent pour la propriété appelée;
  • la variable interne est facile à utiliser, comme avec une opération de tableau ne sera pas tant que vous le souhaitez.

Si le tableau, nous verrons quelles sont les méthodes à utiliser dans un futur article.

Merci à Henry pour quelques suggestions utiles à la rédaction du code.


  1. Pas encore de commentaires ...
  1. Pas encore de trackbacks ...
Immagine CAPTCHA
CAPTCHA audio
Changer d'image
*