Espera un momento ...
¿Te gustaría llevar mi curso de Laravel, gratis?
Sólo debes ingresar tus datos:
Al actualizar a Laravel 8 debemos tener en cuenta que el método isset aplicado sobre colecciones funciona ahora de manera distinta. Veamos con ejemplos en qué consiste este cambio.
Esta lección no cuenta con recursos adicionales.
Si crees que hace falta algo, o necesitas ayuda, puedes publicar una pregunta en el foro.
La primera sección de la guía nos habla acerca de collections. Nos habla sobre las colecciones de Laravel. De manera específica, del método is set. Nos dice que para guardar consistencia con relación al comportamiento típico de PHP, el método offset exists de collection ha sido actualizado para que haga uso de is set en vez de array key exists. Esto puede afectarnos si es que nosotros tenemos colecciones que tienen elementos con valor null. Aquí tenemos un ejemplo para que se comprenda mejor. En esta línea se está creando una colección de Laravel. ¿Cómo se crea una colección en Laravel? Usamos el helper collect y le pasamos un argumento que es un arreglo con los elementos que queremos que contenga la colección. En este caso se está creando una colección usando el helper collect, y la lista de elementos que estamos pasando es un arreglo que tiene un solo elemento, con el valor de null, en este caso. Esta colección se crea y se almacena en esta variable collection. Entonces aquí tenemos Laravel 7 y Laravel 8. Si nosotros inspeccionamos el elemento 0 de esta colección usando "is set", para Laravel 7 esto nos daba el valor de verdadero. Para Laravel 8, si usamos "is set" sobre el elemento 0 eso nos da valor false. ¿Por qué el comportamiento cambia? Lo que ocurre es que cuando se aplica "is set" sobre el elemento de una colección, Laravel implementaba su método offset exist de tal manera que usaba la función array_key_exists. Cuando se usa array_key_exists básicamente se está preguntando a esta colección si existe un elemento en la posición 0. Entonces cuando se ejecutaba "is set" sobre un elemento, si el elemento existía esto devolvía verdadero. Por ejemplo aquí la colección se ha creado con un elemento, ese elemento tiene valor null. Entonces, anteriormente la implementación decía, ¿existe un elemento en la posición cero? Como si existe, devolvía en verdadero. Ahora en cambio, en Laravel 8, cuando se ejecuta is set sobre un elemento de una colección, Laravel por detrás en vez de usar array_key_exists usa también is set. Entonces cuando se evalúa is set de colección cero, básicamente se está evaluando is set sobre el elemento cero que viene a ser null. Entonces, is set de null devuelve falso y esa es la respuesta final que esta expresión nos devuelve. De hecho antes, de que nosotros actualicemos vamos a confirmar este comportamiento. Vamos a imprimir nuestra versión de Laravel. Como aquí se muestra estamos usando Laravel 7.30. Ahora vamos a iniciar la consola interactiva de tinker y vamos a hacer justamente la prueba que hemos visto detrás. Vamos a crear una colección sobre una variable c usando el helper collect, y vamos a definir aquí un arreglo con un único elemento. Acabamos de crear una colección en Laravel. Ahora vamos a ver qué ocurre si llamamos a is set, y le pasamos aquí la colección y preguntamos por el elemento 0. En Laravel 7 el resultado es true. ¿Por qué? Porque si existe un elemento en la posición 0 por eso es que obtenemos verdadero. Vamos a salir y ahora vamos a ejecutar composer update, para que los cambios que hemos puesto en nuestro archivo composer.json tengan efecto Entonces vamos a actualizar nuestro proyecto para que la dependencia Laravel framework use como mínimo la versión 8 en vez de una versión 7, que es lo que estábamos usando anteriormente. No olvidemos de guardar aquí cambios. Luego de guardar cambios ejecutamos el comando composer update, para que las nuevas versiones que estamos solicitando sean descargadas. Por ejemplo vamos a descargar ahora Laravel framework, en su versión 8, en vez de en su versión 7, que es lo que antes teníamos. Por aquí ya se está realizando la actualización, antes usábamos la versión 7.30, y ahora estamos solicitando la versión 8.47. Muy bien, una vez que hemos terminado de actualizar las dependencias, vamos a iniciar nuevamente la consola interactiva de tinker. Vamos a crear una colección c, y vamos a preguntar por el elemento 0 de esta colección usando la función "is set". Como vemos el resultado es false. ¿Cómo afecta esto a nuestro proyecto? Bueno, si nosotros hemos estado usando la función Isset sobre elementos de colecciones, debemos revisar con cuidado que este nuevo comportamiento no vaya a afectar negativamente a nuestro proyecto. Por ejemplo, en este caso, la función Isset sí se ha usado en este proyecto, pero no sobre colecciones, sino sobre arreglos de PHP. Aquí se ha usado sobre arreglos, no sobre colecciones. También se ha usado directamente sobre variables, pero en ningún caso estamos usando Isset sobre colecciones, así que en este caso no hay que hacer ningún cambio al respecto.
¿Tienes dudas?
Publicar preguntaRegístrate
Inicia sesión para llevar un control de tu progreso.
Capítulos
01
17
30
41
43
44
45
46
53
54
56
57
63
64
65
66
67
68
69
70
74
76
77
80
81
89
90
91
93
94
95
96
97
99
103
104
105
106
107
108
110
111
112
113
116
117
118
119
120
123
124
127
128
129
130
133
134
138
139
140
141
142
145
146
147
148
149
155
156
158
159
160
161
162
163
164
165
166
167
168
172
173
174
175
177
178
179
181
182
183
184
186
188
189
193
194
195
196
197
199
200
203
204
205
206
207
229
231
235
236
237
238
239
240
241
245
Estás viendo un capítulo de la serie Guía completa para actualizar Laravel hasta la última versión
Espera un momento ...
¿Te gustaría llevar mi curso de Laravel, gratis?
Sólo debes ingresar tus datos: