Refactoring PHP - Lez. 1: propriétés d'une classe
Lorsque nous écrivons une classe que chacun de nous l'utilisation de ses conventions.
Je recommande d'utiliser les propriétés suivantes d'une classe:
- Si se compose d'un seul mot, tout en minuscules, par exemple $ nom;
- Si elle est faite de beaucoup de mots de la première lettre de chacun, à partir de la seconde, en majuscules, en minuscules tous les autres, par exemple $ nomeAziendaItaliana;
- Si une constante est composé de un seul mot d'écriture dans toutes les casquettes, par exemple des éléments;
- Si nous avons un composé constante de plusieurs mots pour écrire tout en majuscules avec un trait d'union entre les mots, par exemple ELEMENTI_PER_RIGA
- Le nom de la variable doit être auto-explicatif
Toutes les propriétés d'une classe sont privées et peuvent être accessibles via des méthodes et getXXXQ setXXX, dont le niveau d'accès doit être public, de sorte que vous pouvez accéder à l'état interne de l'objet à partir 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:
| Mal | Exact |
class Test { public $ classname; private $ mia_x1; const costante_della_classe; pages const; } | class 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 ne devriez avoir accès via les méthodes publiques, des députés de déclencher des actions de changement.
Un exemple concret est l'ampoule: nous nous intéressons à leur statut, ou à chaud ou à froid, mais nous agissons sur lui par les actions sur et / ou hors, qui représentent nos méthodes.
En ce qui concerne d'accéder aux propriétés de PHP 5, nous utilisons une astuce, rendue possible grâce à l'ensemble fonctions magiques __ et __ get.
Si nous ne voulons pas d'utiliser directement dans votre code et le fonctions getXXXQ setXXX que nous pouvons faire comme l'exemple suivant:
class Test { private $ _nomeClasse; publique __ set function ($ name, $ value) { call_user_func (array ($ this, 'set' ucwords ($ nom)), $ valeur).; } public function __ get ($ nom) { call_user_func (array ($ this, "get" ucwords ($ nom)).); } fonction publique setNomeClasse ($ nom) { $ This-> _nomeClasse = $ nom; } getNomeClasse fonction publique () { return $ this-> _nomeClasse; } } $ Obj = new test (); $ Obj-> className = 'test'; echo $ obj-> className; |
L'astuce consiste à suivre une nomenclature certaine dans les noms et profiter de la magie des fonctions du langage.
Le nom que nous utilisons en dehors de la classe est simplement la propriété, mais sans le trait de soulignement comme premier caractère. Comme il ya une variable de classe avec ce nom, lance le jeu de fonctions PHP __ __ get ou, le cas échéant, en passant le nom de propriété ancienne et de la valeur pour être stocké dans le second cas que le nom.
Condition essentielle pour le fonctionnement est le suivant:
- la variable muette utilisée en dehors de l'objet suivi du convenction nommant de la propriété interne à la classe, à l'exclusion dell'underscore qui ne doivent pas être présents;
- Il existe des méthodes et setXXX getXXXQ pour le rappel des biens;
- la variable interne à utiliser est simple, comme une opération réseau ne sera pas 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 dans l'élaboration du code.











Commentaires récents