Verständinsfrage: PHP-Funktion hat mehr Variablen als Aufruf

mkoeni1

Erfahrenes Mitglied
Hallo Leute,

ich habe jetzt schon ein Weilchen gegoogelt aber konnte keine Antwort finden. Ich hoffe ich bin im richtigen Board. Ansonsten bitte verschieben.
Ich habe in einem PHP-Projekt eine Klasse mit einer Suchfunktion mit 9 Parametern gefunden:
PHP:
...
function search($textpattern="", $category=0, $date="", $keyword="", $activeonly=true, $order="", $limit="0,50", $calcFoundRows=false, $owner="") {
...}

der Aufruf dieser Such-Funktion an einer anderen Stelle im Quellcode hat nach meiner Meinung 2 Parameter weniger (also 7) ? Kann das sein? Ich würde gerne wissen, wie das geht.
PHP:
$reps->search($sv['suche'],$sv['suchecategory'],'','',false,'date',50);

Ich werde daraus nicht schlau.
Ich könnte mir vorstellen Variablen mit Werten in der Definition der Funktion:
PHP:
$category=0
sind schon mit einem Initialwert belegt.

Kann mir das an meinem Beispiel jmd. bitte aufzeigen?


Vielen Dank und Gruß
Matthias
 
Zuletzt bearbeitet:
sieh mal:

function search($textpattern="", $category=0, $date="", $keyword="", $activeonly=true, $order="", $limit="0,50", $calcFoundRows=false, $owner="")

alle variablen die du nicht angibs, erhalten den wert der dort steht.

beispiel:

function hallo($text = "welt") {
echo $text;
}

hallo();

----

Es wird "welt" ausgegeben. weil du bei dem aufruf: "hallo();" kein argument angegeben hast wird das verwendet was bei funktionsdefinition gesetzt wurde: function hallo($text = "welt"). das sind optionale argumente
 
Moin Matthias...

du hast stellst es dir richtig vor:),
ich glaube dieser kurze Schnipsel verdeutlicht es gut :
Code:
<?php
function foo($bar="Standardwert")
{
  echo $bar.'<br>';
}

foo();
foo('dynamischer Wert');
?>
 
Hallo zusammen,


das ging ja schnell mit der Antwort. Vielen Dank.
Dann verstehe ich das bei mir so, dass die fehlenden Werte dann einfach aufrücken und sich ihr Ziel (in dem Fall freie Parameter) suchen.

Naja schwer zu beschreiben, aber ich denke ich habs kapiert

Gruß Matthias
 
Hallo,

nein, die Suchen sich gar nix - ist eigentlich ganz einfach - die vars sehen dann so aus:

PHP:
$textpattern = $sv['suche']
$category = $sv['suchecategory']
$date= '',
$keyword = ''
$activeonly = false
$order = date
$limit = 50
$calcFoundRows = false // (Defaultwert)
$owner = ""  // (Defaultwert)

Es dürfen nur Parameter mit Defaultwert wegelassen werden, die am ende stehen. Daher hat date auch ein "" und ist nicht weggelassen worden.

bye
Andreas
 
Zurück