• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Optionale Parameter in eigener Funktion und Typvoraussetzung

Status
Für weitere Antworten geschlossen.
Moin.

Da ich sehr auf OOP umgestiegen bin suche ich noch nach Möglichkeiten, optionale Parameter in selbst-definierten Funktionen bereitzustellen, aber so richtig will es mit nicht gelingen. Hat vielleicht jemand einen Link zu einer guten Site oder einen Tipp?

Weiterhin suche ich nach einer Möglichkeit, die Typen von Parametern vorauszusetzen. Natürlich ist es möglich, diese mit is_numeric(), is_string(), usw zu überprüfen, doch mit der Zeit wird dies auch ein wenig lästig jedes mal FALSE zurückgeben zu lassen.
 
Hast du dir schon mal die Einführung zu Funktionen vom PHP Manual durchgelesen? Dort wird alle erklärt.

Optionale Parameter in dem sinne gibt es nicht. Es ist nur möglich standardwerte für Parameter zu setzten. Das würde dann so aussehen:
PHP:
<?php
function TestFunc($Param1, $Param2 = 'Bla', $Param3 = NULL)
{
  /* Mach was... */
}

/* Diese funktion kann dann so aufgerufen werden: */
TestFunc(34);
TestFunc(22, 'Hallo');
TestFunc(12, 'Blub', $Irgendwas);
?>

Die parameter mit standardwert müssen also nicht übergeben werden. Dadurch kannst du glaube ich das erreichen was du willst.

Den typ eines Parameters zu bestimmen ist eine Sache die auch ich immer wieder vermisse. Das geht in PHP nur sehr begrentzt. Für alle Basis-Datantypen (string, integer, float, bool) geht es gar nicht. Für selbst definiert Datentypen ist es allerdings ab PHP5 möglich!
Das heißt konstrukte wie diese würden funktionieren:
PHP:
<?php
class MyClass
{
  /* usw. */
}

interface MyInterface
{
  /* usw. */
}

function MyFunc(MyClass $Param1, MyInterface $Param2)
{
  /* Mach was... */
}
/* Gleiches gilt natürlich auch für Abstrakte Klassen. */

/* Das hier geht allerdings nicht: */
function GehtNicht(string $Param1, bool $Param2) //Ganz viele Fehler. 
{

}
?>

Ist aber wie gesagt nur in PHP5 möglich.

Hoffe ich konnte helfen.

Gruß, Prophet
 
^^ Ja danke, ich hatte vergessen, dass man einen Standardwert für Parameter eingeben kann.

Das mit der Typenvorausstzung von Klassen ist schon gut, aber leider für mich nicht brauchbar. Dann werde ich es wohl weiter mit is_bool() etc. ausführen müssen. :(
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben