2012-05-02 15 views
5

¿Hay alguna manera de exigir que un parámetro de función sea un tipo de datos específico como una matriz? Por ejemplo algo como esto:PHP. ¿Hay alguna manera de requerir que un parámetro de función sea una matriz?

function example(array $array){} 

Si lo hace que el trabajo de todos los tipos de datos? ¿Hay un buen recurso que me muestre cómo hacer esto?

+5

para todos, pero para matrices y tipos (clases/interfaces) . Usted encuentra eso documentado en el manual. Primero haga su tarea y mire allí, responde a su pregunta con mucho más detalle. – hakre

+0

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

Respuesta

3

Editar: Sí, puede escribir-pista con matrices, por lo editado mi respuesta y cambiado en consecuencia.

Lo que quieres hacer es llamar type-hinting. No puede escribir tipos de datos básicos de sugerencia, como int, string, bool. Puede sugerencia del tipo con array u objetos e interfaces:

function example_hinted1(array $arr) { 

} 

function example_hinted2(User $user) { 

} 

Calling example_hinted1(5) generará un error fatal de PHP (no es una excepción), pero llamándolo pasando un array es totalmente bien.

Si usted necesita estar seguro de que algún parámetro de una función es de un tipo básico se puede simular este comportamiento con código dentro de su función:

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

Por lo tanto, estos fragmentos trabajarían:

example(1); 

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

mientras éstos serían una excepción:

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

Gracias por la respuesta bien explicada que ayudó mucho. –

Cuestiones relacionadas