Es posible tener php no requieren el comienzo/final de las etiquetas (<?php ?>) para algunos de los archivos?
El código debe ser interpretado como php por defecto.

Soy consciente de que puedo dejar fuera de la etiqueta de cierre (?>).

  • hay una razón específica por la que usted no quiere hacer esto?
  • ¿De dónde pick up que puede dejar fuera de la etiqueta de cierre? Nunca había oído hablar de esto antes.
  • Esto no es un sano comportamiento predeterminado. Que no lo haga.
  • acabo de probar ^^ verás que funciona (siempre y cuando usted no desea que ningún no-código php al final de su archivo) ;; también es recomendado por el estándar de codificación de varios marcos (como Zend Framework, por ejemplo) … el punto es que usted no puede tener espacios en blanco después de la etiqueta de cierre si no hay ninguna etiqueta de cierre.
  • En una estructura MVC, el código se ve feo en el interior de los controladores y modelos. Sé que no es gran cosa, pero he sido codificación de php para 4 años, pero siempre se sentía mal.
  • Todo el mundo parece estar haciendo la suposición de que esta es la programación web. PHP es bastante utilizable como un lenguaje de scripting de propósito general así. En ese contexto, las etiquetas no son siempre tan útil.
  • +1 Esta es una buena pregunta. Las etiquetas de apertura/cierre de la fuerza de una fusión de la pantalla y la lógica. Hay una propuesta: wiki.php.net/rfc/nophptags

InformationsquelleAutor vise | 2009-09-06

5 Comentarios

  1. 13

    No. El intérprete de las necesidades de las etiquetas para saber qué analizar y qué no.

    • Para agregar este esta respuesta, nada fuera de etiquetas PHP es simplemente que se envía al navegador de texto. PHP fue originalmente diseñado como un lenguaje de plantillas, en la cual las etiquetas PHP se entremezclan con HTML, no al revés.
  2. 11

    Si quieres llamar a tu script PHP desde la línea de comandos, usted puede dejar las etiquetas de secuencia de comandos utilizando el -r interruptor. Extracto de man php:

       -r code        Run PHP code without using script tags ’<?..?>’

    Ahora puede invocar el script de la siguiente manera:

    php -r "$(cat foo.php)"
    • Entonces, ¿por qué esta línea php -r 'echo "Hello World!\n";' siempre tira error PHP Parse error: syntax error, unexpected ''echo' (T_ENCAPSED_AND_WHITESPACE), expecting end of file in Command line code on line 1 ?
    • seguro que no, que todavía funciona para mí (PHP 7.1.16). Lo de la plataforma/versión tienes?
    • Windows 7 de 64 bits y PHP 7.1.x estable, pero nunca funciona de la forma que he mencionado, aunque, no tiene errores de sintaxis.
  3. 5

    Es mejor no usar la etiqueta final. Comenzar etiqueta es necesario.

    Como MaoTseTongue mencionado, en Zend documentación no está escrito:

    Para los archivos que sólo contienen código PHP, la etiqueta de cierre («?>») nunca está permitido. No es requerido por PHP, y la omisión impide la inyección accidental de espacios en blanco finales en la respuesta.

    • He escuchado esto antes, y soy curioso en cuanto a qué? Tiene que ver con el espacio en blanco al final del archivo de la causa de los problemas (por ejemplo, el envío de la salida antes de las cabeceras han sido enviados, etc).
    • errr… por ‘lo’ quiero decir ‘por qué’, lo siento!
    • No incluyen la etiqueta de cierre de php previene de «la inyección accidental de espacios en blanco finales en la respuesta». (ver [Zend Framework Documentación][1]). [1]: framework.zend.com/manual/en/…
    • Está bien hacer uso de la etiqueta de cierre (y estéticamente agradable para aquellos que les gusta el equilibrio en sus etiquetas). El punto clave es no incluir ninguna tirados en blanco (por ejemplo. retorno de carro, avance de línea, tabulaciones, espacio, etc.) después de la etiqueta de cierre de php porque el servidor web enviar los caracteres para el navegador. Incluso entonces, para la mayoría de las aplicaciones web que sirven html, xml, json, es generalmente inofensiva. Pero puede causar problemas cuando se construye dinámicamente datos binarios como una imagen. Otra vez se mete en problemas es encabezados http de configuración cuando el código de php que accidentalmente enviado ya un espacio en blanco.
  4. 1

    Del mismo modo se puede hacer un archivo de texto que tiene una .extensión de php, y con la otra, ‘real’ archivo php para cargar el archivo, tales como

    Falso archivo PHP

    php_info();

    Real archivo PHP

    <?
    //file_contents returns a string, which can be processed by eval()
    eval(file_get_contents('/path/to/file/'.urldecode($_GET['fakefile'])));
    ?>

    Además, usted podría utilizar un poco de mod_rewrite artimañas para hacer que el usuario de la web se sienten como que están navegando por el archivo php (por ejemplo,http://example.com/fakefile.php)

    .archivo htaccess:

    RewrieEngine On
    RewriteRule ^(.*)$ realfile.php?fakefile=$1 [QSA]

    Sin embargo, si recuerdo correctamente, el procesamiento será un poco más lento, y hay algunos problemas con cómo evaled código de asas $GLOBALS, $_SERVER, $_POST, $_GET, y otros revendedores. Usted tendrá que hacer una variable global para pasar estas super globals en su evaluados código.

    Por ejemplo:

    <?
    global $passed_post = $_POST;
    //only by converting $_POST into a global variable can it be understood by eval'ed code. 
    eval("global $passed_post;\n print_r($passed_post);");
    ?>
  5. 0

    Puede almacenar el código PHP en un archivo o base de datos (sin <?php ?>) y, a continuación, active mediante eval(). Aviso, el código de realizar más lento. Un eval() ejemplo viene aquí:

    //Data layer (array, database or whatever).
    $arr = array("a","b","c");
    
    //Code layer - hint: you can get the code from a file using file_get_contents().
    $str = 'foreach($arr as $v) { echo $v . " "; }';
    
    //Shake + Bake
    eval($str);

    Resultado: a b c

    • No sigs por favor, tu avatar es ya de firmar por usted.

Dejar respuesta

Please enter your comment!
Please enter your name here