2009-08-02 36 views
59

Jeśli nie zwracam niczego jawnie, co dokładnie zwraca funkcja php?co domyślnie zwraca funkcja php?

function foo() {} 
  1. Jakie to jest?

  2. Jaka jest wartość?

  3. Jak mogę to dokładnie przetestować za pomocą ===?

  4. Czy ta zmiana została zmieniona z wersji php4 na php5?

  5. Czy istnieje różnica między function foo() {} i function foo() { return; }

(Nie pytam jak go przetestować jak if (foo() !=0) ...)

+1

Zobacz http://php.net/manual/en/functions.returning-values.php dla oficjalnej dokumentacji – Sophivorus

Odpowiedz

85
  1. null
  2. null
  3. if(foo() === null)
  4. -
  5. Nie.

Można go wypróbować wykonując:

$x = foo(); 
var_dump($x); 
32

Nie zwracanie wartości z funkcji PHP ma te same semantykę jako funkcję, która zwraca wartość null.

function foo() {} 

$x=foo(); 

echo gettype($x)."\n"; 
echo isset($x)?"true\n":"false\n"; 
echo is_null($x)?"true\n":"false\n"; 

Będzie to wyjście

NULL 
false 
true 

uzyskać ten sam rezultat, jeśli foo jest zastąpiony

function foo() {return null;} 

Odnotowano brak zmiany tego zachowania z PHP4 na PHP5 do php7 (I tylko tested, aby być pewnym!)

+0

+1 ale chciałbym móc +2, to jest bardziej kompletna odpowiedź (zawiera pytanie nr 4 dotyczące zmiany zachowania między wersjami php) – Jonathan