Funktionen & variable Parameter-Anzahl & Ressourcen
Viennamade
- php
Hallo!
Mit func_num_args(), func_get_arg() und func_get_args() habe ich bis jetzt nicht gearbeitet, ich lese mir die Dinger eben durch. Von Ressourcen steht da gar nichts.
Wie siehsts aus mit Ressourcenverbrauch. Wenn der nicht in die Höhe schnellt, sehe ich keinen Grund für selbst geschriebene Funktionen mit fixer Parameteranzahl. Oder ist das ein Blödsinn?
Beste Grüße
Viennamade
Halihallo Viennamade
Mit func_num_args(), func_get_arg() und func_get_args() habe ich bis jetzt nicht gearbeitet, ich lese mir die Dinger eben durch. Von Ressourcen steht da gar nichts.
Wie siehsts aus mit Ressourcenverbrauch. Wenn der nicht in die Höhe schnellt, sehe ich keinen Grund für selbst geschriebene Funktionen mit fixer Parameteranzahl. Oder ist das ein Blödsinn?
Um es einfach zu sagen: Es ist gar nichts anderes, als ein
Funktionsaufruf mit "vordefinierten Parametern". Es verbraucht also
(in etwas) genau dieselben Ressourcen. Das einzige, was bei einer
Funktion mit vordefinierten Parametern anders ist, ist, dass die
Parameter mit entsprechendem Index in der lokalen Variable mit
entsprechendem Namen der Funktionsparameterliste referenziert wird.
Etwas kryptographisch formuliert, hier ein Beispiel:
function test1() {
$t=func_get_arg(0);
// hier steht, was die Funktion ausführt
}
function test2($t) {
// hier steht, was die Funktion ausführt
}
Funktion test1 und test2 sind (bis auf das Faktum, dass PHP
"$t=func_get_arg(0)" selbstständig macht, dies ggf. auch geringfügig
performanter), dasselbe.
PHP Intern verwaltet die Parameter bei einem Funktionsaufruf stets
über in einem Stack/"Array", ob auf diese Parameter nun über
func_get_arg (gewissermassen wie bei einem Array: $func_args[1]),
oder über eine lokale "Referenzvariable" ($t im Beispiel test2($t))
ausliest, ist von Seiten der Performance kein grosser Unterschied.
Bezüglich der wertenden Aussage, ob du Funktionsparameter nun nur
mehr über func_get_arg(s) auslesen willst, da sonst die Anzahl der
Funktionsparameter begrenzt wird... Nun, verwende Funktionen mit
fixer Parameteranzahl, falls dies Sinn macht und verwende Funktionen
mit variabler Parameterzahl, falls das Sinn macht. Aber fixiere dich
nicht auf eine Umsetzung, denn jede hat ihre Vorzüge und Nachteile!
Viele Grüsse
Philipp
Hallo Philipp!
anders ist, ist, dass die Parameter mit entsprechendem Index in der lokalen Variable mit entsprechendem Namen der Funktionsparameterliste referenziert wird.
Etwas kryptographisch formuliert
Jo, für mich schon :-) Aber im Prinzip habe ich es vestanden.
function test1() {
$t=func_get_arg(0);
// hier steht, was die Funktion ausführt
}function test2($t) {
// hier steht, was die Funktion ausführt
}Nun, verwende Funktionen mit fixer Parameteranzahl, falls dies Sinn macht und verwende Funktionen mit variabler Parameterzahl, falls das Sinn macht.
Im Speziellen hat mich das Umschreiben aller Funktionsaufrufe bei Veränderung der Parameter dazu gebracht darüber nachzudenken. In Zukunft werde ich über den Ewigkeitswert einer neuen Funktion nachdenken. Danke für Deine ausfühliche Antwort, welche sehr informativ für mich war.
Beste Grüße
Viennamade