Type hinting es lo que nos permite especificar el tipo de dato que debe tener un argumento en una función o método. Ya lo hemos visto en otros artículos de esta web, pero vamos a dedicarle su espacio propio para explicarlo mejor.
Los tipos podrían ser: array, callable, clases o interfaces.
Callable es una referencia a algo que se pueda llamar. Puede ser el nombre de una función, una matriz que contenga un objeto y el nombre de un método, o una función anónima (closure).
Su objetivo es mejorar la legibilidad del código y evitar errores.
Ejemplo de uso
Normalmente se usa en métodos de clases, recuerda siempre que la idea es forzar a un método a aceptar sólo argumentos de un tipo concreto y al mismo tiempo documentar el código. Podemos decir qué tipo de dato esperamos y que tipo de dato se retornará.
class User
{
// ...
}
class Post
{
public function setAuthor(User $user): void
{
// ...
}
}
$author = new User();
$post = new Post();
$post->setAuthor($author);
Como puedes ver, aquí forzamos que el argumento que se pasa a la función setAuthor() sea un objeto de la clase User. Si el $author no fuera un objeto, no se podría trabajar con setAuthor().
Veamos cómo provoca un error:
$author = 'Author';
$post = new Post();
$post->setAuthor($author);
Al ser un string, obtendremos un error: Fatal error: Uncaught TypeError: Post::setAuthor(): Argument #1 ($user) must be of type User, directamente dice que el argumento debe ser de tipo User y hemos pasado un string.
class Post
{
public function setAuthor(string $author): void
{
// ...
}
public function setTags(array $tags): void
{
// ...
}
public function getTags(): array
{
// ...
}
}
En este otro ejemplo, forzamos que el argumento de setAuthor() sea un string, el de setTags() un array, y que getTags() retorne un array.
Última actualización: 02-02-2026Con void indicamos que el método no retorna ningún valor. Significa vacío.