2017-07-24 11 views
6

czytałem w WordPress podręcznika gdzie znalazłem krótki opis następujących funkcji:Dlaczego funkcje PHP mogą przyjmować argumenty typu boolean, gdy prosi się o liczby całkowite?

function is_super_admin($user_id = false) {... 

Funkcja ta określa, czy użytkownik jest administratorem witryny.

Jednak moje pytanie dotyczy tego, jak PHP radzi sobie z parametrami.

Powyższa funkcja otrzymuje parametr liczby całkowitej, a jeśli nic nie przekazujesz, to przydzieli domyślną wartość FALSE.

Oto moje pytanie:

FALSE jest rodzajem BOOLEAN danych, a funkcja ta powinna przyjąć typ INTEGER danych.

Jak więc można zezwolić na podanie wartości boolowskiej, kiedy powinniśmy podać wartość całkowitą?

+1

Nie deklarujesz nigdzie, że parametr jest "int", dlaczego * nie powinien * działa? – deceze

+0

PHP jest dynamicznie wpisywane. Możesz przekazywać argumenty różnych typów, o ile nie podano inaczej. W tym konkretnym przypadku możesz w zasadzie przekazać cokolwiek. – Mjh

+0

Przeczytaj więcej o [typie żonglowania] (http://php.net/manual/en/language.types.type-juggling.php) w ​​PHP. – axiac

Odpowiedz

9

PHP 7 wprowadził deklaracje typu skalarnego.

Dostępne są w dwóch wersjach: przymusowej (domyślnej) i ścisłej. Następujące typy parametrów mogą być teraz wymuszone (przymusowo lub ściśle): łańcuchy znaków (string), liczby całkowite (int), liczby zmiennoprzecinkowe (zmiennoprzecinkowe) i wartości logiczne (bool). Rozszerzają inne typy wprowadzone w PHP 5: nazwy klas, interfejsy, tablice i możliwość wywoływania.

Poniższy wiersz

function is_super_admin($user_id = false) { . . . . 

nie określa typ paramater. Jeśli zamiast tego:

function is_super_admin(int $user_id = false) { . . . . 

następnie spowoduje błąd.

Domyślam się, że wartość domyślna to false, ponieważ łatwiej jest sprawdzić poprawną wartość, używając prostego if, ponieważ zarówno false, jak i int równe 0, są fałszywe.

Więcej o PHP 7 nowych funkcji here.

Powiązane problemy