webForumDet fria alternativet

Valfritt ange argument för funktion i klass

PHP

5 svar · 433 visningar · startad av Helmertz

Medlem sedan maj 2005353 inlägg
Frågan#1
class test{
	function testa($b = 3, $c = true, $d = "4a"){
		print "b: $b, c: $c, d: $d";
	}
}

Hur bär jag mig åt för att ha dessa argument som standard, men låta möjligheten att ändra dem finnas genom direkt anrop i funktionen? Jämför $test->testa(); med $test->testa(2, false, 3a). Egentlig fråga: för att använda några av standardvärdena (t.ex. $b och $c men inte $d), hur anropas denna funktion då?

Medlem sedan maj 2005353 inlägg
#2

Hittade en artikel hos Zend om detta men tycker det verkar omständigt att använda func_num_args() och func_get_args(). I artikeln nämns inte något sätt att fördefinera endast ett/ett par argument för funktionen.

Medlem sedan mars 20034 471 inlägg
#3

Helmertz skrev:

class test{
	function testa($b = 3, $c = true, $d = "4a"){
		print "b: $b, c: $c, d: $d";
	}
}

Egentlig fråga: för att använda några av standardvärdena (t.ex. $b och $c men inte $d), hur anropas denna funktion då?

$test = new test();
$test->testa(1, false, "d"); 
// ger b: 1, c: , d: d
$test->testa(1, false); 
// ger b: 1, c: , d: 4a
$test->testa(1); 
// ger b: 1, c: 1, d: 4a
$test->testa(); 
// ger b: 3, c: 1, d: 4a
Medlem sedan maj 2005353 inlägg
#4

Hur gör man om man vill använda standard för $d men inte för $b? Måste man ange argumenten i en ordning där standardargumenten kommer i slutet?

Medlem sedan mars 20034 471 inlägg
#5

Hur gör man om man vill använda standard för $d men inte för $b?
Det är lätt, se mitt exempel ovan. Motsatsen går däremot inte.

Måste man ange argumenten i en ordning där standardargumenten kommer i slutet?
Ja.

Medlem sedan maj 2005353 inlägg
#6

aasah skrev:

[...]Motsatsen går däremot inte.

Måste man ange argumenten i en ordning där standardargumenten kommer i slutet?
Ja.

Precis det jag ville veta, tackar.

261 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)