我在扩展课程时遇到了问题。
这就是我想要做的事情:
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
我该怎么做才能解决这个问题?
答案 0 :(得分:3)
将create_user
声明为非静态并从实例中调用它,否则(如错误消息所示)您无法访问$ this,因为$ this始终是对当前实例的引用。在静态环境中,没有一个。
$functions = new Functions();
$functions->create_user();
而不是
Functions::create_user();
如果要捆绑彼此不逻辑相关的函数,请使用命名空间而不是类。你可以使用全静态类(每个微小的属性和方法都是静态的,这样你就不需要任何时候的实例),但这是一个可怕的解决方案而不是应该使用哪些类对