扩展类时出错

时间:2012-06-02 23:17:18

标签: php class this parent extend

我在扩展课程时遇到了问题。

这就是我想要做的事情:

class Core
{
    protected $db;

    public function __construct()
    {
            $this->set_db_class();
    }

    private function set_db_class ()
    {
        include_once ( './classes/Database.php' );
        $this->db   = new Database();
    }
}


class Functions extends Core
{
    public function __construct()
    {
                parent::__construct();
    }

    public static function create_user ()
    {
        $this->db->query ( "INSERT ..." );
    }
}

所以,这是结构,但我的问题是我收到以下错误:

致命错误:在第10行的/Applications/XAMPP/xamppfiles/htdocs/own/newsite/classes/class.Functions.php中不在对象上下文中时使用$ this

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:3)

create_user声明为非静态并从实例中调用它,否则(如错误消息所示)您无法访问$ this,因为$ this始终是对当前实例的引用。在静态环境中,没有一个。

$functions = new Functions();
$functions->create_user();

而不是

Functions::create_user();

如果要捆绑彼此不逻辑相关的函数,请使用命名空间而不是类。你可以使用全静态类(每个微小的属性和方法都是静态的,这样你就不需要任何时候的实例),但这是一个可怕的解决方案而不是应该使用哪些类对