webForumDet fria alternativet

Vill hämta mer än en variabel från en funktion

PHP

9 svar · 305 visningar · startad av GrodanBoll

Medlem sedan sep. 2001788 inlägg
Frågan#1

Tjabba tjena

Jag vill alltså hämta en array o en sträng från en funktion i en klass. Typ MyKlass -> myFunc().
Funktionen returnerar en array på det vanliga sättet men jag vill även returnera en sträng.

Vet ju att man kan använda MyKlass -> myFunc(&$strEtt) för att hämta upp $strEtt igen men hur vettigt e att göra på detta sättet? E det ful-kodning?
Ska man kanske istället anropa en funktion till som då returnetrar strängen på det vanliga sättet (delar då upp den ursprungliga funktionen)? Även om det känns som en omväg och till viss del dubblerar lite kod.

Vad rekommenderas?

Medlem sedan aug. 2001153 inlägg
#2

Hur kan det vara "fulkodning" att ha en funktion som hämtar ett värde på en variablen? Det är väl snare rätt väg att gå...

Nånggn i framtiden kanske du bara vill ha arrayen och inte strängen dessutom.

Medlem sedan mars 20007 896 inlägg
#3

Jo, det är fulkod att använda sig av globala variabler och ändra värden på dem inuti metoder/funktioner. Det du ska göra är att dela upp ursprungsmetoden till två - en för strängen, och en för arrayen. :)

Medlem sedan aug. 2001153 inlägg
#4

Ah... missade &-tecknet.
Skulle inte allt bli call-by-reference i 5.0? Fina möjligheter för fulkodning ;)

Medlem sedan mars 20007 896 inlägg
#5

Njä, det gerju en del möjligheter också - som inte är fulkod. Men just i det här fallet betraktar jag det som fulkod, och att det är bättre med att dela upp metoden. :)

I 5.0 kommer ju allt att bli mer objektorienterat, så det får nog sina fördelar där. :)

Medlem sedan sep. 2001788 inlägg
#6

Ok, tackar :bire
Kommer att testa o dela upp funktionen då. :)

/Grodan

Medlem sedan okt. 2001538 inlägg
#7

Har en liten fundering här. Skulle man inte kunna returnera en array, som i sig håller arrayen på en post, och strängen på en annan.
Alltså typ:

$arr = array();
$arr[] = $array_att_returnera;
$arr[] = $sträng_att_returnera;

return $arr;

Eller är detat sättet också "fult"?

MVH Patrik

Medlem sedan mars 20007 896 inlägg
#8

Självklart går det att göra så, men jag skulle föredra att dela upp metoden. Det blir mycket snyggare.

Medlem sedan juni 20008 205 inlägg
#9

Re: Vill hämta mer än en variabel från en funktion

GrodanBoll skrev:

Vad rekommenderas?

Om det faktiskt finns en anledning, är det inget fel att använda referenser. Däremot brukar man säga att funktioner inte ska ha både bieffekter *och* returvärden (även om den principen är ganska ruckad på ;) ). Däremot tycker jag att du borde ange referensoperatorn i funktionshuvudet i stället för vid anrop:

function foo(&$arr, &$str){
    ...
}
Medlem sedan okt. 2001538 inlägg
#10

Jag håller nog med dig SPiN, ju enklare en funktion är, desto mindre som kan bli fel med den, jag ville bara höra åsikter på denna metod.

MVH Patrik

274 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
143 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)