2009-11-23 17 views
6

Este es el código en index.php, con solo <?php, pero no ?>, esta es la primera vez que veo un código como este, ¿por qué?¿Por qué las etiquetas php no están cerradas en drupal?

<?php 
// $Id: index.php,v 1.94 2007/12/26 08:46:48 dries Exp $ 

/** 
* @file 
* The PHP page that serves all page requests on a Drupal installation. 
* 
* The routines here dispatch control to the appropriate handler, which then 
* prints the appropriate page. 
* 
* All Drupal code is released under the GNU General Public License. 
* See COPYRIGHT.txt and LICENSE.txt. 
*/ 

require_once './includes/bootstrap.inc'; 
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); 

$return = menu_execute_active_handler(); 

// Menu status constants are integers; page content is a string. 
if (is_int($return)) { 
    switch ($return) { 
    case MENU_NOT_FOUND: 
     drupal_not_found(); 
     break; 
    case MENU_ACCESS_DENIED: 
     drupal_access_denied(); 
     break; 
    case MENU_SITE_OFFLINE: 
     drupal_site_offline(); 
     break; 
    } 
} 
elseif (isset($return)) { 
    // Print any value (including an empty string) except NULL or undefined: 
    print theme('page', $return); 
} 

drupal_page_footer(); 

Respuesta

12

La omisión de la etiqueta de cierre impide la inyección accidental de espacios en blanco finales en la respuesta.

Es una práctica común de codificación en algunos Frameworks, como Zend.

+6

Podría valer la pena indicar a los que no lo sepan, la razón por la que no desea espacios en blanco accidentales es que es una forma muy rápida de terminar con el problema de 'encabezados ya enviados'. –

+0

También es utilizado por cualquier Framework/Library que siga el estándar de codificación [PSR-2] (http://www.php-fig.org/psr/psr-2/). –

10

Omitir etiquetas de cierre de PHP es parte de Drupal Coding Standards.

Desde Drupal 4.7, el?> Al final de los archivos de código se omite deliberadamente. Esto incluye para el módulo e incluye archivos. Las razones de esto pueden resumirse así:

  • La eliminación que elimina la posibilidad de que los espacios en blanco no deseados al final de los archivos que puede causar "cabecera" que ya fue enviado errores, problemas de validación de XHTML/XML, y otros problemas.
  • El closing delimiter at the end of a file is optional.
  • PHP.net en sí mismo elimina el delimitador de cierre desde el final de sus archivos (ejemplo: prepend.inc), por lo que esto se puede ver como una "mejor práctica".
Cuestiones relacionadas