为什么我的包含显示在所有其他内容之上?

时间:2014-09-21 21:59:41

标签: php oop

http://tinypic.com/r/2mn0pph/8

当我这样做时会发生这种情况

<?php
  require('page.inc');

  $homepage = new Page();

  $homepage->content = include 'project.php';

 $homepage->Display();  
?>

但如果我这样做:

<?php
  require('page.inc');

  $homepage = new Page();

  $homepage->content = "Hello, stackoverflow!";


  $homepage->Display();  
?>

它完成了这里的意图

http://tinypic.com/r/1214vbt/8

我应该对include语句做些什么特别的事情来获取行之间的所有内容吗?

2 个答案:

答案 0 :(得分:1)

来自PHP documentation

  

include语句包含并评估指定的文件。

包括不会返回它输出的文字:

  

处理返回:include失败时返回FALSE并发出警告。成功包含,除非被包含文件覆盖,否则返回1.可以在包含文件中执行return语句,以终止该文件中的处理并返回到调用它的脚本。


这就是你想要的:

<?php
    require('page.inc');    
    $homepage = new Page();
    $homepage->content = file_get_contents('project.html');
    $homepage->Display();
?>

来自PHP documentation

  

file_get_contents()以字符串

返回文件

正如@lxg提到的那样:

&#34;我认为project.php包含要执行的PHP代码。在这种情况下,file_get_contents(&#39; project.php&#39;);会是一个坏主意。&#34;

答案 1 :(得分:1)

使用output buffering来捕获生成的HTML:

<?php
    require('page.inc');
    $homepage = new Page();

    ob_start();
    require 'project.php';
    $homepage->content = ob_get_clean();

    $homepage->Display();  
?>

这样,PHP就会被执行,但浏览器没有输出。相反,您将在$homepage->content中捕获缓冲的内容。