如何优雅地处理php内容包含?

时间:2011-10-21 16:31:38

标签: php include

我有一个简单的(练习)网站,其结构包括内容选择菜单和内容面板,当选择菜单的元素时,将显示内容。 菜单使用?content_id=...类型的链接来传递信息。

我想在不存在的id或缺少内容上处理404代码但是为了这样做,我必须在页面加载时计算内容面板的内容,以便我可以在其他所有内容之前输出正确的标题。我最后在我的文件的开头写了这段代码,并在必要时打印$content变量。无论如何,我对这种方法感到安静不舒服,因为我必须停止自然流来捕捉include输出。

<?php 
  // if no content is specified in the address, select the home page (0)
  $content_id = (isset($_GET['content_id'])) ? $_GET['content_id'] : 0;

  //check if selected content exists and put the content inside the $content variable (to be used later)
  if ($content_id < 0 OR $content_id > 2 OR !is_file('exContent/content'.$content_id.'.php')) {
    header("HTTP/1.0 404 Not Found");
    ob_start();
    include 'exContent/noContent.php';
  }
  else { 
    ob_start();
    include 'exContent/content'.$content_id.'.php';
  }

  $content = ob_get_contents(); ob_end_clean();
?>

我无法弄清楚最好的方法是什么,如果你能帮助我,我会很高兴的!

1 个答案:

答案 0 :(得分:1)

可能会好很多但这是一个开始:)

  $includeFile 'exContent/content'.$content_id.'.php';

  if ($content_id < 0 OR $content_id > 2 OR !is_file( $includeFile )) {
    header("HTTP/1.0 404 Not Found");
    $includeFile = 'exContent/noContent.php';
  }

  ob_start()
  include $includeFile;
  $content = ob_get_contents();
  ob_end_clean();