Breaking

Post Top Ad

Your Ad Spot

martes, 29 de septiembre de 2020

Tutorial de colecciones de Laravel

 




Tomemos una aventura en un tutorial de colecciones de Laravel. Después de haber usado el marco de Laravel durante algún tiempo, me he acostumbrado a trabajar con sus diversas características. Una de las cosas en las que he querido profundizar es el aspecto de Colecciones de Laravel. Estarás lidiando con colecciones de laravel todo el tiempo, y hasta este punto, tal vez seas como yo y descubras lo que necesitabas a medida que avanzaste. ¡No más! Ahora nos convertiremos en maestros profesionales de Laravel Collection al sumergirnos en profundidad, hacer doble clic, profundizar o cualquier otra frase de moda que le gustaría usar en Laravel Collections.


La clase de colección

Antes incluso de comenzar a ver todos los métodos que podemos usar, veamos el archivo de clase en síPodemos ver que tiene todas estas declaraciones de uso en la parte superior.

Entonces, ¿qué significan todos estos y de dónde vienen? Bueno, vamos a atacarlos uno por uno. Primero, tenemos use Countable;Con PHP Storm, podemos usar la práctica herramienta "Ir a la declaración" para ver.

usar contable

Esto nos lleva SPL.phpy nos muestra la Countableinterfaz.

interfaz contable

¡Muy genial! Podemos ver que la interfaz Contable es parte de la Biblioteca PHP estándar (SPL) . Al utilizar esta técnica, podemos descifrar todas estas declaraciones de uso.


Biblioteca PHP estándar

utilizar Contable

usar ArrayIterator

usar CachingIterator

use InvalidArgumentException


Extensión PHP JSON

utilizar JsonSerializable


Interfaces y clases predefinidas de PHP

utilizar ArrayAccess

utilizar IteratorAggregate


Iluminar la interfaz de contratos

use Illuminate \ Contracts \ Support \ Jsonable

use Illuminate \ Contracts \ Support \ Arrayable

También tenga en cuenta que la clase Collection vive en el espacio de nombres Illuminate \ Support Genial, sacamos las cosas administrativas del camino y sabemos lo que significa.


Probar los ejemplos de Laravel

La documentación de Laravel es fantástica y la usaremos como guía para este tutorial de colecciones. Al leer los documentos, podemos ver que para crear una colección, podemos usar el collectayudante conveniente para hacerlo. Ahora que no soy tan bueno para aceptar que las cosas simplemente funcionan, cuando no sé cómo funcionan, incluso debo indagar en cómo funciona este ayudante. Si nos ponemos nuestra gorra de detective, podemos ver que viene directamente de este código aquí .

El helpers.phparchivo tiene una use Illuminate\Support\Collection;declaración en la parte superior, por lo que nuestra función auxiliar puede crear una nueva Collectionpara nosotros usando este fragmento.

Nueva colección

Con nuestro nuevo conocimiento de esta conveniente función de ayuda, permítanos crear una Colección Laravel para divertirnos y obtener ganancias.

Como puede ver, ahora tenemos una colección con la que podemos trabajar. Una de las primeras cosas que se explicarán en la documentación es cómo mapear cada elemento de la colección y aplicarle una función mientras se rechazan los valores que no especifican un criterio determinado. Usando este ejemplo, echemos un vistazo a nuestra propia colección de sitios. Cambiaremos el formato de todas las URL para incluir un prefijo www mientras eliminamos cualquier URL que contenga la palabra facebook. Vamos a intentarlo.

¡Frio! Tenga en cuenta que en esta iteración, hacemos uso de la interfaz fluida. ¿Qué significa ser fluido? Todo lo que significa es que puede encadenar comandos para obtener el resultado deseado. Es como encadenar métodos en jQuery. Aplicamos dos métodos a la colección para lograr nuestro resultado deseado. mapa y rechazo . Dentro de lamapiteración, aplicamos lastr_replacefunción a cada elemento de la colección, eliminando http: // y reemplazándolo por http: // www. Durante larejectiteración usamos el método auxiliar de Laravel str_contains para filtrar cualquier elemento que contenga la palabra facebookTenga en cuenta que la expresión debe ser igual a verdadera para que el rejectmétodo elimine el elemento. Así que casi podemos leer esto como, si la cadena contiene facebook, entonces lo rechazamos. Podemos ver en la captura de pantalla anterior que obtuvimos el resultado deseado.


Los métodos de colección de Laravel

Con una comprensión básica de lo que es una colección de Laravel, veamos ahora todos los métodos disponibles uno por uno.


1. todos ()

La clase Collection tiene una propiedad protegida denominada $itemsque contiene una matriz. De esto se construye la Colección. El all()método simplemente devuelve esa propiedad. Esto es útil si desea cambiar una colección de Laravel en una matriz PHP nativa.

Al probar esto en nuestra propia pequeña colección, podemos ver que se nos devuelve la matriz en la que se basa la colección.


2. avg ()

El avgmétodo hace exactamente lo que crees que haría, calcula el promedio de una colección. Aquí está el código que lo impulsa.

Podemos hacer uso de él en una colección estrictamente numérica como tal.

También puede proporcionar una clave a la que aplicar el promedio. En el ejemplo de una matriz asociativa, necesitaría hacer esto.

La visita promedio de Starbucks le costará $ 3.56.


3. trozo ()

Nunca encontré mucho uso para chunk hasta que leí la documentación, que tiene un gran caso de uso. Como era de esperar, chunk toma un grupo de cosas y lo divide en grupos más pequeños. El caso de uso que menciona la documentación trata con una cuadrícula de Bootstrap, por ejemplo. Si alguna vez ha tenido una cuadrícula llena de elementos y se encuentra recorriendo un conjunto de resultados y luego verificando el valor de un iterador para determinar dónde terminar una fila, ¡este es para usted! De hecho, este es para mí, ¡ya que hago esto todo el tiempo! En lugar de preocuparse por esto, simplemente use chunk () en su lugar. Así es como funciona.

Tenga en cuenta el uso de la función PHP array_chunk () .

Probarlo por nosotros mismos produce estos resultados.

Al recorrer los resultados fragmentados, tenga en cuenta que necesitará un foreach anidado ya que ahora tiene una colección de colecciones más pequeñas. Por lo tanto, debe recorrer cada fragmento y luego recorrer el contenido de cada fragmento individualmente.


4. colapso ()

Este método hace uso de una llamada a un método estático como vemos aquí.

El código al que hace referencia está aquí.

Tome nota especial de la función PHP array_merge () .

Aquí está nuestra pequeña prueba rápida del colapso.

Antes del colapso.

Después del colapso.


5. contiene ()

¿Cuántas veces necesita verificar si una matriz contiene un valor? Todo el tiempo, ¿verdad? El práctico método contains en Laravel Collections hace que sea fácil de hacer cuando se trabaja con una matriz que ha sido recopilada.

El contiene código.

En primer lugar, podemos ver que el código hace uso del PHP nativo func_get_args () . El método data_get () es un método auxiliar personalizado en el marco de trabajo illuminate. Finalmente, podemos ver que in_array () se pone en uso. Visite cada uno de los enlaces anteriores uno por uno para asegurarse de que comprende cada paso del proceso.

Probar contiene () con la siguiente colección.

Parece que el método contiene solo verifica el valor, no la clave de la colección.

Al pasar una cadena vacía como segundo parámetro, puede verificar la existencia de una clave específica.

Puede pasar dos parámetros de manera sensible a mayúsculas y minúsculas para verificar la existencia de un par clave-valor. Tenga en cuenta que esto solo se aplica a las colecciones anidadas, por lo que el fragmento anterior funciona, pero el fragmento siguiente no.

Para ser un poco más granular, puede hacer uso de su propia función de devolución de llamada. Echale un vistazo.

No hay ninguna clave con el nombre de hiphop en nuestra colección. Sin embargo, tenemos un valor NSX en la colección, de ahí el retorno de verdad. Esto también nos permite buscar un par clave-valor en una colección plana como esta.


6. contar ()

Simple pero útil, contar hace exactamente lo que dice, cuenta la cantidad de elementos de la colección. ¿Como funciona? Como así.

El método usa la función nativa de PHP count () . Entonces, en la clase Colección Laravel, simplemente miramos la propiedad $ items y devolvemos la cantidad de elementos que contiene. Observa nuestro ejemplo.


7. diff ()

Este método hace uso de array_diff () para comparar matrices. Este es el código que lo hace funcionar.

Por ejemplo, imagine que un candidato tiene una variedad de empresas para las que le gustaría trabajar. Ella necesita comparar esto con una variedad de empresas que actualmente no están contratando, luego tratar de entrevistar solo a aquellas que están contratando. ¿Cómo podría hacer esto?


8. cada uno ()

Este método le permite aplicar una devolución de llamada a cada elemento de la colección y se alimenta con este código.

Por ejemplo, tendremos una colección de números. Siempre que el número sea menor que 5, usaremos una devolución de llamada para cuadrarlo.

El mismo resultado con un foreach se llevaría a cabo así:

Ya ve, each()solo agregue un poco de azúcar para que pueda codificar en un estilo más moderno si lo prefiere. Elige tu veneno.


9. cada ()

Este método interesante se asoma a su colección y crea una nueva colección en cada enésimo elemento que especifique. La fuente está aquí.

A medida que probamos todos los métodos, podemos ver cómo funciona.

Al pasar un desplazamiento, podemos cambiar el punto de partida para contar.