不在对象上下文中时使用$ this

时间:2010-05-15 15:46:10

标签: php oop class

我正在创建一个显示博客的功能。所以我创建了一个show blog函数,但它不断给出“在不在对象上下文中时使用$ 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;">&nbsp;</div>
                <div class="entry">
                    <?php echo $blogItem['blog_content'];?>
                </div>
            </div>
            <?php
            }
        }
    }
}

2 个答案:

答案 0 :(得分:6)

您是如何致电getLatestBlogsBig的?如果您在静态上下文(Blog::getLatestBlogsBig())中调用它,则无法将$this解析为对象。您需要在getLatestBlogsBig类的实例上调用Blog方法。

答案 1 :(得分:1)

我不明白如何使用您发布的代码来获取此错误/行,因为您必须处于对象模式才能到达该行。 getLatestBlogsBig()是否在您实际运行的代码中声明为静态?

在静态函数中使用$this->myFunction()不起作用。请改用self::myFunction()。请记住,myFunction()必须是静态函数