2012-05-30 117 views
1

我想学习PHP,所以我很可能会犯一个非常初学者级别的错误。这个PHP有什么问题?什么都没有显示

基本上,我有一个page.php文件,它是我想要创建的页面的类文件,并且我想将它包含在我的home.php页面中(我使用require函数执行此操作)。但是,什么也没有显示我正在做这个基于我正在阅读的书,它似乎在那里工作得很好。

page.php文件:

<?php 

class Page { 
    // attributes 
    public $content; 
    public $title = "TLA Consulting Pty Ltd"; 
    public $keywords = "TLA Consulting, Three Letter Abbreviation, some of my best friends are search engines"; 
    public $buttons = array("Home" => "home.php", "Contact" => "contact.php", "Services" => "services.php", "Site Map" => "map.php"); 

    public function __set($name, $value) { 
     $this->$name = $value; 
    } 

    public function display() { 
     echo "<html>\n<head>\n"; 
     $this->displayTitle(); 
     $this->displayKeywords(); 
     $this->displayStyle(); 
     echo "</head>\n<body>\n"; 
     $this->displayHeader(); 
     $this->displayMenu($this->buttons); // try this line without giving it the parameter 
     echo $this->content; 
     $this->displayFooter(); 
     echo "</body>\n</html>"; 
    } 

    public function displayTitle() { 
     echo "<title>$this->title</title>"; 
    } 

    public function displayKeywords() { 
     echo "<meta name=\"keywords\" content=\"$this->keywords\" />"; 
    } 

    public function displayStyle() { 
?> 
     <style> 
      h1 { 
       color: white; 
       font-size: 24px; 
       text-align: center; 
       font-family: helvetica, arial, sans-serif; 
      } 

      .menu { 
       color: white; 
       font-size: 12px; 
       text-align: center; 
       font-family: helvetica, arial, sans-serif; 
       font-weight: bold; 
      } 

      td { 
       background-color: black; 
      } 

      p { 
       color: black; 
       font-size: 12px; 
       text-align: justify; 
       font-family: helvetica, arial, sans-serif; 
      } 
     </style> 
<?php 
    } 

    public function displayHeader() { 
?> 
     <table width="100%" cellpadding="12" cellspacing="0" border="0"> 
      <tr bgcolor="black"> 
       <td aling="left"><img src="http://i.imgur.com/xBrUZ.png" alt="Iron Man's finger" /></td> 
       <td><h1>TLA Consulting Pty Ltd</h1></td> 
      </tr> 
     </table> 
<?php 
    } 

    public function displayMenu($buttons) { 
     echo "<table width=\"100%\" bgcolor=\"white\">\n"; 
     echo "<tr>\n"; 

     // calculate button size 
     $width = 100/count($buttons); 

     while (list($name, $url) = each($buttons)) { 
      $this -> displayButton($width, $name, $url, !this->IsURLCurrentPage($url)); 
     } 
     echo "</tr>\n</table>\n"; 
    } 

    public function IsURLCurrentPage($url) { 
     if (!strpos($_SERVER['PHP_SELF'], $url)) { 
      return false; 
     } 
     else { 
      return true; 
     } 
    } 

    public function displayButton($width, $name, $url, $active = true) { 
     if ($active) { 
      echo "<td width=\"".$width."%\"> 
      <a href=\"$url\"><img src=\"http://i.imgur.com/xBrUZ.png\" alt=\"$name\" /></a> 
      <a href=\"$url\"><span class=\"menu\">$name</span></a> 
      </td>"; 
     } 
     else { 
      echo "<td width=\"".$width."%\"> 
      <img src=\"http://i.imgur.com/xBrUZ.png\" /> 
      <span class=\"menu\">$name</span> 
      </td>"; 
     } 
    } 

    public function displayFooter() { 
     echo "<p>I am a footer ololz</p>"; 
    } 
} 

?> 

home.php:

<?php 

    require("page.php"); 

    $homepage = new Page(); 

    $homepage->content = "<p>Hi there, I like blueberries greatlly.</p> 
          <p>I hope you'll join me in loving blueberries!</p>" 

    $homepage->display(); 

?> 

任何了解,将不胜感激。

+1

您是否打开了错误报告?你有什么错误吗? – j08691

+6

也许是因为home.php中的这一行没有分号。 '$首页 - >内容=“

您好,我喜欢蓝莓greatlly

我希望你能和我一起爱蓝莓

!”' – sbeliv01

+0

解析错误:语法错误,在page.php文件上意外T_OBJECT_OPERATOR行86 – Lobo

回答

4

两个问题:

  • this应该$thispage.php 86线。
  • 您在...blueberries!</p>"

到底需要一个分号,您可能没有看到的错误,如果error reporting未打开。

+0

哦,这工作完美。我仍然在想Java的思维方式。我现在要在我手背上画一个大的美元符号。还添加了分号以及错误报告。欢呼彻底的答案。 –

+0

其实我用的服务器是我们大学的。我无法改变这一点,我可以吗? –

+0

只要尝试在'home.php'的顶部放置'error_reporting(E_ALL);'。 –

1

在home.php文件你在国家统计局10

缺少分号在page.php文件文件你就行的丢失字符“$” 86

$this -> displayButton($width, $name, $url, !$this->IsURLCurrentPage($url)); 
2

你使用php的开头和结尾不一致。

例如这里:

public function displayStyle() { 
?> 
    <style> 
     h1 { 
      color: white; 
      font-size: 24px; 
      text-align: center; 
      font-family: helvetica, arial, sans-serif; 
     } 

     .menu { 
      color: white; 
      font-size: 12px; 
      text-align: center; 
      font-family: helvetica, arial, sans-serif; 
      font-weight: bold; 
     } 

     td { 
      background-color: black; 
     } 

     p { 
      color: black; 
      font-size: 12px; 
      text-align: justify; 
      font-family: helvetica, arial, sans-serif; 
     } 
    </style> 
    <?php 
    } 

您正在启动的功能,那么你关闭PHP块打破它?“>”粘贴将在页面加载时也有这种样式表的一部分。 如果要使用此功能显示样式,则必须使其类似于:

<?php 
public function displayStyle() { 

echo "<style>". 
     "h1 {". 
      "color: white;"; 
    } 
?> 
+0

或使用输出缓冲。 – nickb

+0

我以为这看起来很奇怪,但这本书告诉我如何去做。这是一个截图。 http://i.imgur.com/Uqfuz.png –