mboost-dp1

PHP Objekt


Gå til bund
Gravatar #1 - nickbakkegaard
7. apr. 2011 22:12
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;
Gravatar #2 - redhead
7. apr. 2011 22:39
Da det er en klasse, skal du have en __construct funktion til at gøre det, hvis du vil på den måde som du illustrerer, ellers skal du initierer variablen fra start eks
class person {
public $navn = "Kurt";
Gravatar #3 - nickbakkegaard
8. apr. 2011 07:22
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;
}
Gravatar #4 - bodhiBit
8. apr. 2011 08:45
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..
Gravatar #5 - nickbakkegaard
8. apr. 2011 10:53
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?
Gravatar #6 - Mnc
8. apr. 2011 10:57
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.
Gravatar #7 - Windcape
8. apr. 2011 11:26
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?
Hvis det er en struct, kan du godt argumentere for at det ikke er encapsulation, men bare en data-struktur.

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.
Gravatar #8 - KaW
15. apr. 2011 13:31
Det er også meget sløvere at kalde funktionen på objektet end det er at tilgå variablen direkte.
Gravatar #9 - Corholio
26. apr. 2011 19:49
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.

Opret Bruger Login