扩展类时出错
问题描述:
在扩展类时遇到问题。扩展类时出错
这就是我要怎样做:
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 ...");
}
}
所以,这就是estructure,但我的问题是,我发现了以下错误:
致命错误:使用$这个时候而不是在第10行的/Applications/XAMPP/xamppfiles/htdocs/own/newsite/classes/class.Functions.php中的对象上下文中。
我能做些什么来解决这个问题?
答
声明create_user
为非静态并从实例中调用它,否则(因为错误消息说)您不能访问$ this,因为$ this始终是对当前实例的引用。在静态的情况下,没有一个。
$functions = new Functions();
$functions->create_user();
代替
Functions::create_user();
如果您希望捆绑未逻辑上相互关联的功能,使用命名空间,而不是一类。你可以去一个全静态类(每一个微小的属性和方法是静态的,这样你就不需要一个实例在任何时候),但这是一个可怕的解决方案,而不是什么类应该用于。
非常感谢,它的工作! – Lucas