Laravel nos ofrece varias alternativas para trabajar con las clases que se encuentran en el contenedor de inyección de dependencias de la aplicación. Esto a través de la inyección de dependencias, usando Facades o por medio de helpers. En esta lección haremos un repaso del uso de cada una de estas opciones y conoceremos sus diferencias. Además conoceremos cómo usar el nuevo helper de cache.
Notas
Por Clemir Rondón
Un helper es una función de ayuda que realiza un procedimiento específico y puede usarse en cualquier parte de la aplicación.
Como ejemplo podemos usar un helper para llamar una vista desde un controlador por medio del helper view():
public function index() { return view('home'); }
Puedes revisar los helpers disponibles en Laravel y cómo funcionan en:
- Documentación oficial
- src/Illuminate/Support/helpers.php
- src/Illuminate/Foundation/helpers.php
- Cómo crear Helpers personalizados en Laravel
- Manejo de arreglos con helpers en Laravel
Un facade, en cambio, es una interfaz estática que provee acceso a un objeto de una clase que se encuentra disponible en el contenedor de inyección de dependencias de la aplicación.
Si se trabaja con Facades en una clase que tiene un namespace o nombre de espacios se debe importar la clase del Facade o usar una barra invertida \ para que la aplicación busque la clase en el namespace global. En el archivo config/app.php se encuentran los alias de clases de los Facades usados por la aplicación.
Como ejemplo para hacer el mismo llamado de la vista a través de un controlador pero usando el Facade View:
public function index() { return \View::make('home'); }
En caso que quieres estudiar a profundidad los Facade de Laravel consulta la documentación oficial. De igual forma en Styde hemos explicado este tema en detalle:
- Qué son los facades y cómo implementarlos en tu proyecto
- Facades personalizados en Laravel 5.1
- Implementación de «Facades» en un proyecto de PHP
La inyección de dependencias por otro lado, es un patrón de diseño orientado a objeto que nos permite escribir código desacoplado y por tanto reusable.
Como ejemplo pero ahora usando inyección de dependencias:
//no olvides importar la clase al controlador //use Illuminate\View\Factory; public function index(Factory $view) { return $view->make('home'); }
Te invitamos a revisar el contenido de los cursos que ofrecemos en Styde, donde no solo aprenderás a escribir código más eficiente, reusable y fácil de mantener sino que te ayudarán a entender cómo funcionan los frameworks de desarrollo modernos como Laravel:
- Curso de programación orientada a objetos con PHP
- Curso de creación de componentes para PHP y Laravel
En Laravel 5.2 y versiones anteriores la manera de trabajar con Cache era a través de Facade o la inyección de dependencias pero ahora en Laravel 5.3 tenemos disponible el helper cache por lo cual puedes en vez de hacer:
\Cache::put('message','Esto es un mensaje', 5); \Cache::get('message');
puedes usar el helper para crear:
cache()->put('message', 'Esto es un mensaje', 5); cache(['message' => 'Esto es un mensaje'], 5);
y para obtener el valor:
cache('message'); cache()->get('message');
Material relacionado
- Uso de caché en Laravel 5.1
- Nuevos helpers en Laravel 5.2
- Cómo crear Helpers personalizados en Laravel
- Manejo de arreglos con helpers en Laravel
- Facades personalizados en Laravel 5.1
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.
Lección anterior Uso avanzado del método where en las Colecciones en Laravel 5.3 Lección siguiente Cambios en el método firstOrCreate de Eloquent en Laravel 5.3