当不在对象上下文中时使用$ this
问题描述:
我正在创建一个显示博客的函数。所以我做了一个节目博客的功能,但它一直给“使用$这个时候不是在对象上下文”错误
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;"> </div>
<div class="entry">
<?php echo $blogItem['blog_content'];?>
</div>
</div>
<?php
}
}
}
}
答
你怎么打电话getLatestBlogsBig
?如果您在静态上下文中调用它(Blog::getLatestBlogsBig()
),则不能将$this
解析为对象。您需要在Blog
类的实例上调用getLatestBlogsBig
方法。
答
我不明白如何使用您发布的代码来获取此错误/行,因为您必须处于对象模式才能触及该行。 getLatestBlogsBig()在您实际运行的代码中声明为静态?使用$this->myFunction()
在一个静态函数里面不起作用。改为使用self::myFunction()
。请记住,myFunction()必须是一个静态函数
+0
这是静态和非静态类的问题。使用self解决了这个问题::现在一切正常,感谢您的帮助 – Ken 2010-05-15 18:22:19
请显示您正在运行的PHP代码以调用Blog类。 – 2010-05-15 15:49:14
[PHP的致命错误:当不在对象上下文中时使用$ this]可能重复(http://*.com/questions/2350937/php-fatal-error-using-this-when-not-in-object-context ) – 2017-04-05 19:32:05