Introducción a Tinker, la consola de Laravel

En Laravel, cuando queremos probar algo (sea una clase, modelo o similar) tenemos que crear, al menos, una ruta en el archivo router.php y su correspondiente función o un controlador. Otra opción es utilizar algún método al que chapuceamos temporalmente.

Por fortuna Laravel viene “de serie” con una consola de comandos, llamada Tinker, que nos permite hacer pruebas rápidas para hacer pruebas.

La consola de comandos Tinker la suelen usar mucho los principiantes para experimentar con Laravel. También se puede usar para hacer una demostración rápida de cómo funciona una clase o una función.

Poner en marcha Artisan Tinker

Para poner en marcha la consola basta con abrir un terminal, ir a la carpeta de nuestro proyecto Laravel y teclear:

php artisan tinker

Este comando pondrá en marcha Tinker y mostrará el siguiente mensaje:

Psy Shell v0.7.2 (PHP 5.6.13-1+deb.sury.org~trusty+3 — cli) by Justin Hileman
>>>

Desde la consola podemos ejecutar código PHP normalmente. Por ejemplo, podemos crear una variable, asignarle un valor y, después, mostrarla con echo:

>>> $nombre = 'Gorka';
=> "Gorka"
>>> echo $nombre;
Gorka⏎

En esta consola tenemos disponibles prácticamente todo lo que nos ofrece Laravel. Por ejemplo, tenemos acceso a todas las clases y modelos de nuestro proyecto.

Tinker tiene buena memoria

En las últimas versiones de Tinker podemos usar la flecha arriba para recuperar la última línea que hemos ejecutado.

También se guarda lo tecleado entre una sesión de Tinker y otra. Es decir, cuando cerramos Tinker y lo volvemos a abrir ahí sigue estando lo que hicimos la última vez. Vamos, que funciona como una consola de Linux.

Funciones de apoyo (helpers)

Tinker nos permite también usar todas las funciones de apoyo disponibles en Laravel.

Podemos usar, por ejemplo, la función camel_case() que convierte una cadena al formato camelCase:

>>> echo camel_case('mi_texto');
miTexto

Puedes usar Tinker para experimentar y ver cómo funcionan algunas de estos helpers.

Usar Facades

Los Facades son una especie de atajo para determinadas clases. Laravel incluye un montón de Facades que nos ayudan a teclear menos y hacer que el código sea más “entendible”.

Por ejemplo, hay un Facade que nos permite acceder a la configuración de nuestra aplicación, el Facade “Config”.

Si queremos saber el valor de un determinado valor en nuestros ficheros de configuración podemos hacer:

>>> Config::get('app.url');
=> "https://gulvi.com"

Esto nos devolverá el valor de la clave 'url' que hay en el ficerho config/app.php.

Usar modelos

Con Tinker también podemos acceder a los modelos que tengamos en nuestra aplicación. Vamos a ver cómo usar el modelo User, que viene por defecto en cualquier instalación Laravel.

NOTA: Deberás tener configurada tu base de datos y creada la tabla users para que esto funcione correctamente.

Creamos un nuevo objeto User que nos permitirá trabajar con el modelo y añadir un nuevo registro a la tabla users:

>>> $usuario = new \App\User;
=> App\User {#683}

NOTA: Un error de principiante habitual es poner \app\User en lugar de \App\User. Si lo haces verás un mensaje similar a:

PHP Fatal error:  Undefined constant app\User in eval()'d code on line 1

El siguiente paso es añadir el nombre y lo guardamos:

>>> $usuario->name = 'Gorka';
=> "Gorka"
>>> $usuario->save();
=> true

También podemos pre-cargar el modelo \App\User:

>>> use App\User;
=> null

De esta forma podemos crear los objetos User sin añadir el \App\:

>>> $otro = new User;
=> App\User {#749}

Resumen

Como puedes ver Tinker es una magnífica herramienta para probar cosas y experimentar. Te recomiendo que la pruebes.

Autor:
Nivel: Intermedio
Palabras clave:
Fecha publicado:
Fecha actualizado: 20-08-2016

Otros capítulos de la misma serie

Este capítulo es parte de la serie: Laravel pearls.

Y muchos más en preparación.

Disponible en los planes: Laravel hero