Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Leguim en 11 Enero 2020, 19:39 pm



Título: [Pregunta]: ¿echo lleva paréntesis?
Publicado por: Leguim en 11 Enero 2020, 19:39 pm
Buenos días,

se dice que no se deben poner paréntesis cuando usamos echo (php) es decir...
Código
  1. echo('string');
  2.  
  3. // esto va a mostrar por pantalla... "string"
  4. // la forma en la que lo hice se dice mucho que no se debe hacer y que la forma correcta es
  5. echo 'string';
  6.  

¿Pero por qué? Independientemente de cual use va a funcionar, no me va a devolver algún tipo de advertencia o error... entonces ¿por qué no se puede hacer así? (si esto ocasiona algún tipo de problema imperceptible lo voy a cambiar de la forma que me digan, pero tengo esa duda porque hasta donde yo lo veo que tampoco sé muchisimo lo veo como algo inutil pero puedo cambiar de opinión)


Título: Re: [Pregunta]: ¿echo lleva paréntesis?
Publicado por: engel lex en 11 Enero 2020, 19:44 pm
https://www.php.net/manual/es/function.echo.php (https://www.php.net/manual/es/function.echo.php)

Citar
echo no es realmente una función (es una construcción del lenguaje), por lo que no se requiere el uso de paréntesis con él. echo (a diferencia de otras construcciones del lenguaje) no se comporta como una función, es decir no siempre se puede usar en el contexto de una función. Además, si se quiere pasar más de un parámetro a echo, éstos no deben estar entre paréntesis.

...

Nota: Puesto que esto es una construcción del lenguaje y no una función, no puede ser llamada usando funciones variables.

hay poco que decir fuera de lo que indica allí pero en resumen, echo se comporta a bajo nivel mas parecido a include, function, return, etc... que a un funcion, ve a echo como si fuera una especie de return hacia el buffer de salida...

por qué es así? en resumen... porque si... porque al señor Rasmus Lerdorf le pareció la manera de ser


Título: Re: [Pregunta]: ¿echo lleva paréntesis?
Publicado por: MinusFour en 12 Enero 2020, 00:48 am
entonces ¿por qué no se puede hacer así? (si esto ocasiona algún tipo de problema imperceptible lo voy a cambiar de la forma que me digan, pero tengo esa duda porque hasta donde yo lo veo que tampoco sé muchisimo lo veo como algo inutil pero puedo cambiar de opinión)

No es que no se pueda hacer así. Simplemente que el hecho de agregar paréntesis realmente no hace nada más que hacer trabajar al interprete un poco más quizás y puede confundir a alguien haciendo creer que es una función.

Es como si hicieras: (2) + (2). No está mal... pero tampoco es necesario...


Título: Re: [Pregunta]: ¿echo lleva paréntesis?
Publicado por: @XSStringManolo en 12 Enero 2020, 08:39 am
Puede confundir usar paréntesis cuando no son necesarios. No se recomienda escribir código que no se sepa lo que va a hacer a primera vista. O que programadores nuevos en el lenguaje en el que programas no sean capaces de entender su funcionamiento.
Por ejemplo:
Código
  1. <script>
  2. for(;alert('h');alert('e'))alert('l'),alert('l')
  3. alert('o');alert('l'),alert('a')
  4. </script>

Este código es totalmente válido y si no conoces como funciona el lenguaje y varias de sus normas como los condicionales en bucles, las iteraciones, los ; implícitos, las , en las expresiones, la omisión de corchetes en bloques de una sola expresión y la omisión de ; en el scope global. No vas a tener ni idea de que va a hacer el código. Y probablemente tras probarlo tampoco entiendas como funciona.
Los paréntesis en el echo pueden dar a entender que como programador quieres resaltar la evaluación de la expresión como tal. Normalmente para indicar: "Hey, no me equivoqué. Realmente quiero hacer esto."
Código
  1. <?= ('H' . 0 + 1 + 4); >
Poner los paréntesis me sirve para eso, siendo prescindibles.