W podręczniku PHP, aby pokazać składnię funkcji z parametrami opcjonalnymi, używają nawiasów wokół każdego zestawu zależnych parametrów opcjonalnych. Na przykład dla date()
funkcji instrukcja brzmi:
string date ( string $format [, int $timestamp = time() ] )
Gdzie $timestamp
jest parametrem opcjonalnym, a pozostawione puste, domyślnie przyjmuje time()
wartość zwracaną przez funkcję.
Jak zabierasz się do tworzenia takich opcjonalnych parametrów podczas definiowania niestandardowej funkcji w PHP?
function dosomething($var1, $var2, $optionalValue = null)
Znalazłem tę lepszą opcję.Jeśli jednak potrzebujesz tej funkcji:
Zakładając, że
$bar
nie należy się oczywiście do logicznych.źródło
$bar === false
- jest to akcja, którą należy wykonać, gdy zostanie ustawiona$bar
domyślniefalse
. Pozwoli to uniknąć niepoprawnego działania, jeśli0
zostanie przekazane, więc działa - O ile NIE jest wymagana wartość logiczna. Jak powiedział Kzqai, bardziej ogólnym rozwiązaniem jest użycie$bar = null
, ponieważ można tego również użyć, gdy wartości $ bar są boolowskie. Test staje się następnieif (is_null($bar))
lubif ($bar === null)
.Kilka notatek, które również uznałem za przydatne:
Zachowaj wartości domyślne po prawej stronie.
Domyślna wartość argumentu musi być stałym wyrażeniem. Nie może to być zmienna ani wywołanie funkcji.
źródło
Podaj opcjonalny argument wartość domyślną.
źródło
Funkcja daty byłaby zdefiniowana mniej więcej tak:
Zwykle wstawiasz wartość domyślną w ten sposób:
Jednak tylko literały są prawidłowymi domyślnymi argumentami, dlatego użyłem
null
jako domyślnego argumentu w pierwszym przykładzie, a nie$timestamp = time()
, i połączyłem go z zerowym sprawdzaniem. Literały obejmują tablice (array()
lub[]
), logiczne, liczby, ciągi inull
.źródło
Jeśli nie wiesz, ile atrybutów należy przetworzyć, możesz użyć token (
...
) listy argumentów variadic wprowadzonej w PHP 5.6 ( zobacz pełną dokumentację tutaj ).Składnia:
Na przykład:
Jak widać, token zasadniczo zamienia wszystkie parametry w tablicę, którą można przetwarzać w dowolny sposób.
źródło