mboost-dp1
PHP Objekt
- Forside
- ⟨
- Forum
- ⟨
- Programmering
Er det nødvendigt at lave en masse get og set til ens object eller kan man godt gøre dette:
class person {
var $navn;
$this->navn = "Kurt";
}
$person = new person;
echo $person->navn;
Den mulighed kender jeg godt. Men spørgsmålet er egentlig om det er det okay at kalde en objekt variabel ($person->navn) eller man skal lave en get
public funktion get_name {
return $this->name;
}
public funktion get_name {
return $this->name;
}
Det er altid smartest at lave getters og setters.. På den måde kan du altid lave indledende øvelser før du sætter eller returnerer en property, f.eks. validering.. Og så behøver du kun at ændre i classen hvis noget skal ændres, og ikke bøvle med at finde alle steder i din kode hvor du bruger objektet..
KarmicMind (4) skrev:Det er altid smartest at lave getters og setters.. På den måde kan du altid lave indledende øvelser før du sætter eller returnerer en property, f.eks. validering.. Og så behøver du kun at ændre i classen hvis noget skal ændres, og ikke bøvle med at finde alle steder i din kode hvor du bruger objektet..
Kan godt se det smarte. Men sidder med et objekt med 20 variabler det er 40 funktioner bare i getter og setter?
Det er sjældent at alle variabler skal have både get og set.
Mange gange vil nogle variabler kun skulle have en get, og så få dens værdi via constructoren, og omvendt andre kan sættes med set, og så bruges værdien i de metoder din klasse måtte have, men det er ikke nødvendigt at kunne udlæse den.
Og der er mange andre eksempler.
Det er jo bare ting som du er nødt til at prøve at udtænke i forvejen, og så se og få skrevet dine kedelige get/set :P
Ellers så lav et class creation tool. Har godt nok smidt det væk nu, men dengang brugte man et par timer på at lave et værktøj som sparede én for timevis af kedelig typework. :P Bestemt dét værd, hvis det ikke er sidste gang du skal lave en ny klasse.
Mange gange vil nogle variabler kun skulle have en get, og så få dens værdi via constructoren, og omvendt andre kan sættes med set, og så bruges værdien i de metoder din klasse måtte have, men det er ikke nødvendigt at kunne udlæse den.
Og der er mange andre eksempler.
Det er jo bare ting som du er nødt til at prøve at udtænke i forvejen, og så se og få skrevet dine kedelige get/set :P
Ellers så lav et class creation tool. Har godt nok smidt det væk nu, men dengang brugte man et par timer på at lave et værktøj som sparede én for timevis af kedelig typework. :P Bestemt dét værd, hvis det ikke er sidste gang du skal lave en ny klasse.
Hvis det er en struct, kan du godt argumentere for at det ikke er encapsulation, men bare en data-struktur.nickbakkegaard (5) skrev:Kan godt se det smarte. Men sidder med et objekt med 20 variabler det er 40 funktioner bare i getter og setter?
Getters/Setters er til for at give adgang til det interne state i et objekt. Ikke representere en data-type.
Det er dog et problem i de fleste OO sprog, at de kun har én type til formålet -- et objekt.
Windcape (7) skrev:Det er dog et problem i de fleste OO sprog, at de kun har én type til formålet -- et objekt.
PHP har så associative arrays, som kan bruges til formålet.
#8
Det er vist i nano-sekunder det er "sløvere", så det ligger man ikke mærke til - i hvert fald ikke når det kommer til 20 variabler.
Gå til top
Opret dig som bruger i dag
Det er gratis, og du binder dig ikke til noget.
Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.