2012-05-02 5 views
5

Czy istnieje sposób na wymaganie, aby parametr funkcji był konkretnym typem danych, na przykład tablicą? Na przykład coś takiego:PHP. Czy istnieje sposób na żądanie, aby parametr funkcji był tablicą?

function example(array $array){} 

Jeśli tak, to działa dla wszystkich typów danych? Czy istnieje dobry zasób, który pokaże mi, jak to zrobić?

+5

nie dla wszystkich, ale dla tablicy i typów (klas/interfejsów) . Znajdziesz to udokumentowane w instrukcji. Najpierw odrób swoją pracę domową i zajrzyj tam, a odpowiedź na twoje pytanie będzie o wiele bardziej szczegółowa. – hakre

+0

http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/#functions – maialithar

Odpowiedz

3

Edycja: Tak, można wpisać-podpowiedź z tablicami, więc edytowane moją odpowiedź i odpowiednio zmienione.

To, co chcesz zrobić, to type-hinting. Nie można wpisywać podstawowych typów danych, takich jak int, string, bool. Można wpisać-podpowiedź z array lub obiektów i interfejsów:

function example_hinted1(array $arr) { 

} 

function example_hinted2(User $user) { 

} 

Wywołanie example_hinted1(5) PHP wygeneruje błąd krytyczny (nie wyjątek), ale nazywając ją przechodzącą tablicę jest całkowicie w porządku.

Jeśli chcesz mieć pewność, że jakiś argument funkcji jest od typu podstawowego można symulować ten problem z kodem wewnątrz funkcji:

function example($number) { 
    if (!is_int($number) { 
    throw new Exception("You must pass an integer to ".__FUNCTION__."()"); 
    } 
    // rest of your function 
} 

Tak, te fragmenty będą pracować:

example(1); 

$b = 5 + 8; 
example($b); 

natomiast będzie to wyjątek:

example('foo'); 
example(array(5, 6)); 
example(new User()); 
+0

Dzięki za dobrze wyjaśnioną odpowiedź bardzo pomogło. –

Powiązane problemy