Hallo
Ich zeig mal einfach was ich machen will.
[code lang=php]
class Texte {
var $msg = array(
'text1' => 'Der Text: %s',
'text2' => 'Der Text %s hat %s Zeichen.'
);function _() {
// Welche Parameter?
// Wenn eine Funktion keine erwartet, dann kann sie auch keine bekommen
Natürlich erwartet die Funktion Parameter.
$args = func_get_args();
$what = array_shift($args);
einen für den Schlüssel des Arrays
return sprintf($this->msg[$what], $args);
und beliebig viele die dann an sprintf weiter gereicht um den enstpechenden Text auszugeben.
}
}[...] *schüttel*, schlimm.
Keine Ahnung was du da jetzt so schlimm findest, dass ist eine sehr elegante Methode um z.b. verschieden sprachige Texte auszugeben, wo z.b. bestimmte Werte ersetzt werden müssen z.b.
sprintf 'Ein Fehler: %s", 'meldung';
sprintf 'Fehler in Datei %s in Zeile %s", 'test.php', 72;
sprintf 'unbekannter Fehler";
wie du siehst, sind auch hier variable Parameteranzahl möglich, also eine normale Sache.
Das geht natürlich nicht, macht aber eventuell deutlich was ich möchte.
Ich dachte ich hätte das :-(
In Perl würde die Funktion so aussehen:
Perls Umgang mit Funktionen und Funktionsparametern fand ich stets sehr gewöhnungsbedürftig. Vielleicht habe ich mich deswegen nie richtig mit dieser Programmiersprache anfreunden können.
In dem Fall ist PHP gewöhnungsbedürftig, zumindest für mich, da es keinen Weg gibt zu sagen ob man ein Array oder ein Skalar hat, PHP macht hier keinen Unterschied
Aber wie mache ich das mit PHP?
Vielleicht hilft Dir dieser Archivthread weiter.
Nö, das Problem ist ja nicht dass ich nicht weiß wie ich an die Parameter kommen, sondern wie ich PHP sage, dass ich ein Array an sprintf übergeben will und keinen Skalar.
Struppi.