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

Mas*_*ask 6 php drupal

这是代码index.php,只有<?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();
Run Code Online (Sandbox Code Playgroud)

CMS*_*CMS 12

省略结束标记可防止意外将尾随空白空间注入响应中.

在某些框架中是常见的编码实践,如Zend.

  • 值得一提的是,对于那些不知道的人,你不想要意外空白区域的原因是它是一种非常快速的方式来结束"已经发送的标题"问题. (6认同)

ale*_*pas 10

省略PHP结束标记是Drupal Coding Standards的一部分.

从Drupal 4.7开始,故意省略了代码文件末尾的?>.这包括模块和包含文件.其原因可归纳为:

  • 删除它消除了文件末尾不需要的空格的可能性,这可能导致"已发送标头"错误,XHTML/XML验证问题以及其他问题.
  • 文件末尾结束分隔符是可选的.
  • PHP.net本身从其文件末尾删除了结束分隔符(例如:prepend.inc),因此这可以被视为"最佳实践".