¿Por qué el primer elemento 0 del array esta vacío cuando realiza el <code>var_dump($this-&gt;segments)</code>?

Gastón Berruet

Gastón Berruet

Pregunta
studenthace 5 años

¿Por qué el primer elemento 0 del array esta vacío cuando realiza el

var_dump($this->segments)
?

3 respuestas
para escribir tu comentario
    Enrique Gamboa

    Enrique Gamboa

    studenthace 4 años

    Entendamos qué está pasando.

    $_SERVER
    es una variable superglobal propia de php que contiene las cabeceras y rutas del sitio web. Al ser un array tú le puedes pedir cualquier parte de estas cabeceras/rutas y te las devolverá. En este caso le estamos pidiendo que nos devuelva la uri, esta nos devolverá lo que se encuentra después del nombre del sitio. ejemplo:
    platzi.com/cursos
    en este caso
    $_SERVER[REQUEST_URI]
    nos devolverá
    /cursos
    .

    Este URI que nos devolvió lo pasamos por la función explode()

    explode('/', $_SERVER['REQUEST_URI']);
    Si recuerdas, explode() sirve para dividir un string por partes y nos devuelve un array con estas partes. Para ello le pasamos un delimitador que le indique cómo dividir el string. en este caso le pedimos que nos divida el string en partes cada vez que encuentre un '/'. como en este caso no hay nada antes del '/' este nos devolverá un elemento vacío. El segundo elemento contendrá el string 'cursos' de nuestro ejemplo: [0] => [1] => cursos Supongamos que queremos dividir el siguiente string
    'nunca pares de apender'
    por espacios:
    explode(' ', 'nunca pares de aprender']);
    nos devolverá un array con los siguientes elementos: [0] => nunca [1] => pares [2] => de [3] => aprender

    Muy bien, nuestro URI ya está dividido por partes, ahora tenemos que almacenar estas partes en una variable. Esto es justamente lo que hace esta línea:

    $this->segments = explode('/', $_SERVER['REQUEST_URI']);

    Ahora para ver lo que tenemos almacenado en

    $segments
    tenemos que hacer un
    var_dump()
    :
    var_dump($this->segments);
    y este nos devuelve efectivamente lo que ya habíamos visto más arriba: [0] => [1] => cursos

    Esto es justamente lo que está sucediendo con el código. Entender qué es lo que hace tu código en cada momento es muy importante, para eso existe la documentación oficial donde puedes aprender más al respecto: https://www.php.net/

    Referencias: https://www.php.net/manual/es/reserved.variables.server.php https://platzi.com/clases/2032-datos-php/32091-extraccion-de-datos/ https://www.php.net/manual/es/function.explode.php https://www.php.net/manual/es/function.var-dump

    Jaime Andres Valencia Gaviria

    Jaime Andres Valencia Gaviria

    studenthace 4 años

    porque la ruta inicia con / y eso lo toma como vacio segun parece, porque no esta entrando a ninguna subcarpeta u otro controller

    Martín S. Campos

    Martín S. Campos

    studenthace 5 años

    Por que en si la ruta/request empieza con /, al separar se encuentra que antes de esa ruta no hay nada. platzi.test / controller / method, sin contar el platzi.test

Curso de Introducción a Frameworks de PHP

Curso de Introducción a Frameworks de PHP

Construye aplicaciones web profesionales con PHP utilizando frameworks como Laravel y Symfony. Aprende a manejar estructuras, peticiones, controladores y vistas para optimizar tu desarrollo. Ideal para quien ya programa en PHP.

Curso de Introducción a Frameworks de PHP
Curso de Introducción a Frameworks de PHP

Curso de Introducción a Frameworks de PHP

Construye aplicaciones web profesionales con PHP utilizando frameworks como Laravel y Symfony. Aprende a manejar estructuras, peticiones, controladores y vistas para optimizar tu desarrollo. Ideal para quien ya programa en PHP.