1

クラスの拡張に問題があります。

これは私がやろうとしていたことです:

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 のオブジェクト コンテキストにないときに $this を使用する

これを解決するにはどうすればよいですか?

4

1 に答える 1

3

create_user非静的として宣言し、インスタンスから呼び出します。それ以外の場合 (エラー メッセージが示すように)、$this は常に現在のインスタンスへの参照であるため、$this にアクセスできません。静的コンテキストでは、1 つもありません。

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

それ以外の

Functions::create_user();

互いに論理的に関連していない関数をバンドルする場合は、クラスではなく名前空間を使用します。すべて静的なクラスを使用することもできます (すべての小さなプロパティとメソッドは静的であるため、いつでもインスタンスは必要ありません) が、それは恐ろしい解決策であり、クラスを使用する目的ではありません。

于 2012-06-02T23:20:51.030 に答える