为什么drupal中没有关闭php标记?

为什么drupal中没有关闭php标记?,php,drupal,Php,Drupal,这是index.php中的代码,只有,这是我第一次看到这样的代码,有什么原因吗 <?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 appropriat

这是
index.php
中的代码,只有
,这是我第一次看到这样的代码,有什么原因吗

<?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();

省略结束标记可防止在响应中意外注入尾随空格


在某些框架中是一种常见的编码实践,例如。

省略PHP结束标记是其中的一部分

自从Drupal 4.7以来,代码文件末尾的?>被故意省略。这包括for模块和include文件。其原因可概括为:

  • 删除它可以消除文件末尾出现不需要的空白的可能性,这可能会导致“header ready sent”错误、XHTML/XML验证问题和其他问题
  • 这个
  • PHP.net本身从文件末尾删除了结束分隔符(例如:),因此这可以被视为“最佳实践”

对于那些不知道的人来说,值得一提的是,您不希望出现意外空白的原因是,这是一种非常快速的方法,可以解决已发送的
标题问题。任何遵循编码标准的框架/库都会使用它。