Mads-b Skrevet 28. januar 2009 Del Skrevet 28. januar 2009 Jeg har en liten problemstilling til dere kyndige OOP'ere der ute: Si at jeg har en klasse: class c { public function f1($input) { //do stuff } public function f2() { //return stuff } } Jeg bruker den slik: $class = new c; $class->f1('addSomeInput'); $class->f1('addSomeMoreInput'); echo $class->f2(); Noen på nettet ga meg blod på tann og sa at det kunne alternativt skrives som under, men jeg får bare "call to non-object" på den.. Hva gjør jeg galt? Dette er nemlig kjappere og mer leselig: $class = new c; echo $class->f1('input')->f1('moreInput')->f2(); Vad tycks? Er jeg helt på jordet? Lenke til kommentar
H1rik_L Skrevet 28. januar 2009 Del Skrevet 28. januar 2009 La f1() returnere objektet, slik: class c { public function f1 ($input) { // do stuff return $this; } } Lenke til kommentar
OIS Skrevet 28. januar 2009 Del Skrevet 28. januar 2009 Og så du vet navnet på disse så du kan gjøre det enklere forstått når du snakker med andre som programmerer: Funksjoner i klasser kalles metoder. Å linke flere metodekall ved å returnere this kalles method chaining. Lenke til kommentar
Mads-b Skrevet 28. januar 2009 Forfatter Del Skrevet 28. januar 2009 Excellent! Flotte greier. Det gjør straks koden litt mer.. Uhm.. "Mangfoldig" OIS: Jeg er kjent for å gjøre meg misforstått. Å bruke riktig terminologi gjør ting for enkelt ^^ Takk for hjelpen. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå