Mads-b Skrevet 28. januar 2009 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?
H1rik_L Skrevet 28. januar 2009 Skrevet 28. januar 2009 La f1() returnere objektet, slik: class c { public function f1 ($input) { // do stuff return $this; } }
OIS Skrevet 28. januar 2009 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.
Mads-b Skrevet 28. januar 2009 Forfatter 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.
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å