Question : OOP, classes, question d'accédant/mutator (internaute novice)

Bonjour, j'avais joué du violon le PHP pendant des années, mais seulement juste commencé à saisir le modèle development.

So d'OOP… J'écris ma première série de classes et emploie des charges des fonctions d'accédant et de mutator (parce qu'apparemment « c'est la chose faite "). Est-ce qu'question qui jaillit rapidement pour s'occuper, j'est peux dois employer deux fonctions pour l'accédant et mutator ou je combiner les deux ? e.g.

function SetGetThing ($stin=FALSE) {
si (! $stin) {
$this->thing de retour ;
du
} autrement {
$this->thing = $stin ;
du
}}/>
Seems à moi qui diviserait en deux presque le nombre de fonctions (sans compter le texte de phpdoc) dans mes classes. Est-ce que mais… il viole une certaine loi plus élevée d'OOP et irrite les dieux ? :)

Cheers !
class= de

Réponse : OOP, classes, question d'accédant/mutator (internaute novice)

Il pourrait valoir de préciser ici, la raison de obtiennent/fonctions réglés. Je constate qu'il y a souvent beaucoup de malentendus dans ce secteur et les gens se plaignent au sujet du tout cela « dactylographie inutile ».

Dans beaucoup de classes il y a les données élémentaires relatives où la valeur d'une propriété peut dépendre de la valeur des autres. Un exemple simple serait une date - le nombre de jours est 31 excepté fév., avr., juin, septembre et novembre. Par conséquent la dernière chose que vous voulez est quelqu'un EN DEHORS de faire de classe

$myClass->days = 31 ;

pendant des mois « courts » l'uns des. Il est CORRECT pour les longs mois. En employant l'accédant de setDays vous pouvez empêcher ceci

setDays de fonction ($d) {
     si ($d > && 30 $this->month =…. fév., avr. .etc)
          mourir (« erreur à la ligne ». __LINE. « en manuscrit ». __FILE. « - date hors de gamme ») ;

     $this->days = $d ;
}


Ainsi vous avez empêché une erreur entrant dans le système. Même où les valeurs sont non-dépendantes vous pouvez et devriez imposer des contrôles de validation. Par exemple si une valeur peut seulement avoir une gamme de zéro à 59 puis imposer cela et l'un ou l'autre jet une erreur, afficher un message de produit de remplacement un défaut - celui qui soit approprié pour vos données.

Regarder « placent » des méthodes comme filtre de validation pour toutes vos données et s'assurent que toutes les propriétés sont déclarées qu'ou s'est protégé ou privé (protégée est la « norme » pour 90% de tout le code)
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us