Viennamade: Funktionen & variable Parameter-Anzahl & Ressourcen

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

  1. 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

    1. 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