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

时间:2015-07-09 02:55:56

标签: php

<?

class Flip 
{

    private $db;

    public function __construct()
    {
        $this->db = new Database();
    }

    public function flips()
    {
        $flips = array();

        $result = $this->db->Select()->Get('flips');
        if($result)
        {
            foreach ($result as $value) 
            {
                $flips[] = $value;
            }
            return $flips;
        }
        return false;
    }

    public function flipComment($id)
    {
        return $this->db->Select()->Where('id', $id)->Get('comments');
    }

}
  

致命错误:在不在对象上下文中时使用$this

任何想法如何解决?我不想为每个函数调用类Database。我需要能够使用$this->db

2 个答案:

答案 0 :(得分:1)

您无法使用$this,因为这些功能不属于某个类。

    Class MyClass {
        private $db;

        public function __construct()
        {
            $this->db = new Database();
        }

        public function comment()
        {
            $this->__construct();

            return $this->db->Select()->Get('comments');
        }
}

答案 1 :(得分:0)

使你的变量变为静态,在构造函数中你可以看到它是否已经设置好了。然后,您只需打开一次连接,每次拨打Flip时,都可以使用该连接。

class Flip
{
    private static $db;

    function __construct()
    {
        if (!isset(self::$db))
            self::$db = new Database();
    }

    function comment()
    {
        return self::$db->Select()->Get('comments');
    }
}

有关static keyword

的更多信息