2010-05-15 97 views
2

我正在创建一个显示博客的函数。所以我做了一个节目博客的功能,但它一直给“使用$这个时候不是在对象上下文”错误

Class Blog{ 

    public function getLatestBlogsBig($cat = null){ 
     $sqlString = "SELECT blog_id FROM jab_blog"; 
     if($cat != null) 
      $sqlString .= " WHERE blog_cat = " . $cat; 

     $sqlString .= " ORDER BY blog_id DESC LIMIT 5"; 
     $blog = mysql_query($sqlString); 

     while($id = mysql_result($blog,"blog_id")){ 
      $this->showBlog($id); //Error is on this line 
     } 

    } 

    function showBlog($id,$small = false){ 
     $sqlString = "SELECT blog_id FROM jab_blog WHERE blog_id=" . $id . ";"; 
     $blog = mysql_query($sqlString); 

     if($small = true){ 
      echo "<ul>"; 
      while($blogItem = mysql_fetch_array($blog)){ 
       echo '<a href="' . $_SESSION['JAB_LINK'] . "blog/" . $blogItem['blog_id'] . "/" . SimpleUrl::toAscii($blogItem['blog_title']) .'">' . 
        $blogItem['blog_title'] . '</a></li>'; 
      } 
      echo "</ul>"; 
     }else{ 
      while($blogItem = mysql_fetch_array($blog)){ 
      ?> 
      <div class="post"> 
       <h2 class="title"><a href="<?php echo $_SESSION['JAB_LINK'] . "blog/" . $blogItem['blog_id'] . "/" . SimpleUrl::toAscii($blogItem['blog_title']);?>"><?php echo $blogItem['blog_title'];?></a></h2> 
       <p class="meta"><span class="date">The date implement</span><span class="posted">Posted by <a href="#">Someone</a></span></p> 
       <div style="clear: both;">&nbsp;</div> 
       <div class="entry"> 
        <?php echo $blogItem['blog_content'];?> 
       </div> 
      </div> 
      <?php 
      } 
     } 
    } 
} 
+0

请显示您正在运行的PHP代码以调用Blog类。 – 2010-05-15 15:49:14

+0

[PHP的致命错误:当不在对象上下文中时使用$ this]可能重复(http://stackoverflow.com/questions/2350937/php-fatal-error-using-this-when-not-in-object-context ) – 2017-04-05 19:32:05

回答

6

你怎么打电话getLatestBlogsBig?如果您在静态上下文中调用它(Blog::getLatestBlogsBig()),则不能将$this解析为对象。您需要在Blog类的实例上调用getLatestBlogsBig方法。

1

我不明白如何使用您发布的代码来获取此错误/行,因为您必须处于对象模式才能触及该行。 getLatestBlogsBig()在您实际运行的代码中声明为静态?使用$this->myFunction()在一个静态函数里面不起作用。改为使用self::myFunction()。请记住,myFunction()必须是一个静态函数

+0

这是静态和非静态类的问题。使用self解决了这个问题::现在一切正常,感谢您的帮助 – Ken 2010-05-15 18:22:19

相关问题