Rafael: Methode überladen

Kann ich in PHP eine Funktion irgendwie überladen? Ich habe entweder 4 Parameter oder keinen. Aber irgendwie klappt das nicht so ganz wie ich es mir vorstelle.

Ich habe folgendes probiert: Ich unterscheide innerhalb der Funktion was passiert (Klappt nicht) oder ich definiere zwei Funktionen mit unterschiedlichen Parametern. (Klappt auch nicht)

Gibt es trotzdem irgendeine Möglichkeit? Ist nicht zwingend erforderlich, würde aber später einiges einfacher machen. (Für eine existierende Seite, die überarbeitet werden soll...)

Danke für jeden Hinweis!

Viele Grüße.

  1. Hallo Rafael.

    Kann ich in PHP eine Funktion irgendwie überladen? Ich habe entweder 4 Parameter oder keinen. Aber irgendwie klappt das nicht so ganz wie ich es mir vorstelle.

    Wie wäre es hiermit:

    class Foo {  
      
      function bar($str_baz = 'BAZ', $str_qux = 'QUX') { # „BAZ“ und „QUX“ sind hiermit Vorgabewerte  
      
        echo 'baz = ' . $str_baz . "\n"  
             'qux = ' . $str_qux;  
      }  
    }  
      
    $obj_foo = new Foo;  
      
    /*  
     * baz = BAZ  
     * qux = QUX  
     */  
    $obj_foo->bar();  
    /*  
     * baz = FOO  
     * qux = BAR  
     */  
    $obj_foo->bar('FOO', 'BAR');
    

    Einen schönen Montag noch.

    Gruß, Mathias

    --
    ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
    debian/rules
    1. Hallo nochmal.

      function bar($str_baz = 'BAZ', $str_qux = 'QUX') { # „BAZ“ und „QUX“ sind hiermit Vorgabewerte

      echo 'baz = ' . $str_baz . "\n" .
               'qux = ' . $str_qux;
        }
      }

      #…

        
      Hier hätte ich punkten sollen.  
        
        
      Einen schönen Montag noch.  
        
      Gruß, Mathias  
      
      -- 
      ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)  
        
      debian/rules
      
      1. Klasse, es klappt (ungefähr).
        Danke!

  2. echo $begrüßung;

    Kann ich in PHP eine Funktion irgendwie überladen? Ich habe entweder 4 Parameter oder keinen. Aber irgendwie klappt das nicht so ganz wie ich es mir vorstelle.

    Alle Möglichkeiten, einer Funktion Argumente zu übergeben und in der Funktion darauf zuzugreifen sind im Handbuch im Kapitel Function arguments aufgeführt. Neben der Möglichkeit, Default-Werte für nicht übergebene Parameter zu setzen, kann man beispielsweise auch auf die Liste der Argumente direkt zugreifen, z.B. mit func_get_args().

    function foo() {  
      print_r(func_get_args());  
    }
    

    echo "$verabschiedung $name";