Cuando trabajamos con bases de datos en Laravel hacemos uso del ORM que trae consigo el framework por defecto, se trata de Eloquent, el cual nos ofrece un gran número de métodos muy útiles al momento de interactuar con cada modelo de datos (o tabla dentro de una base de datos). Por ejemplo
// Nueva instancia del modelo user
$user = new User;
// Devuelve el registro con id = 1
$user->find(1);
Para mas información sobre Eloquent visita nuestros tutoriales al respecto.
Esto es gracias a la clase Collection de Eloquent que a su vez extiende de la clase Illuminate\Support\Collection de Laravel. Esta clase nos ofrece también otra forma de trabajar con variables de tipo Array gracias al helper collect() de Laravel.
$array = [1,2,3,4,5];
$collection = collect($array);
// Devuelve "1" -- el primer elemento del array
$collection->first();
Desafortunadamente cuando usamos el helper collect() no podemos obtener los valores de un array de la misma forma que lo hacemos con los objetos de Eloquent; Es decir, no podemos llamar $user->name, por el contrario tenemos que usar el método get() para obtener el valor.
Vamos a solucionar ese problema extendiendo la funcionalidad de la clase Illuminate\Support\Collection en una nueva clase que llamaremos Collector. Primero crearemos un nuevo directorio llamado Collector dentro de la carpeta app/. Una vez hecho esto, vamos a crear un nuevo archivo para nuestra clase llamado Collector.php que extenderá a la clase Illuminate\Support\Collection.
Una excepción es un evento inesperado que ocurre durante la ejecución de un programa e interrumpe la ejecución normal del mismo.
Una excepción es lanzada desde un método cuando las condiciones para la ejecución normal de dicho método no se cumplen, y luego puede ser atrapada en algún lugar del sistema utilizando un bloque try / catch.
La idea cuando estamos creando nuestros métodos y necesitamos crear una excepción, es crear una clase personalizada cuyo nombre debe describir qué componente produjo el error o cuál fue el error.
Además, aunque se produzca una excepción no «atrapada» en nuestro código, podemos, de igual forma, escribir una prueba con PHPUnit para probar este comportamiento.
Todo esto lo veremos en detalle en la lección de hoy:
Regístrate para ver ésta y cientos de lecciones exclusivas.
Todos amamos las sintaxis que nos provee el motor de plantillas Blade para escribir nuestras vistas, y no es el único, hay otros motores de plantillas geniales como Twig o Smarty, escritos en y para PHP.
Pero imaginemos por un momento que tienes un proyecto que no está usando ningún framework: quizás te toque escribir código para WordPress como a mí, o editar algo de «legacy code» de un proyecto, e instalarle Smarty o algún otro template engine no es una opción viable. Ver post
¿Alguna vez te has preguntado cómo funcionan ORMs como Eloquent? Eloquent y otros ORMs en PHP hacen uso de algo llamado Métodos mágicos
Los métodos mágicos mágicos los provee PHP y nos permiten realizar ciertas tareas orientadas a objetos.
Los métodos mágicos identifican por el uso de dos guiones bajos “__” como prefijo, y funcionan como interceptores que se llaman automáticamente cuando ocurre una condición.
Cuando trabajamos con clases y objetos en la programación orientada a objetos, generalmente estamos escribiendo código de 2 tipos:
Código encargado de instanciar (o crear) otros objetos
Código que realiza operaciones con dichos objetos
Por ejemplo, consideren que están intentando conectarse al API de un servicio de E-mail o SMS, seguramente necesitarán un KEY para crear el objeto y quizás el email <from> por defecto:
$key = Config::get('mailer.key');
$mailer = new Vendor\Api\Mailer($key, '[email protected]');
Styde usa cookies para guardar tus preferencias y para seguimiento anónimo AceptarLeer más
Privacy & Cookies Policy
Privacy Overview
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.