Methode überladen
Rafael
- php
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.
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
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
Klasse, es klappt (ungefähr).
Danke!
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";