0

私はいつものようにクラスを作成しています。メンバー変数を作成し、セッターとゲッターをセットアップし、$thisを使用してメンバー変数の値を呼び出します。しかし、何らかの理由で、致命的なエラーが発生します。オブジェクトコンテキストにないときに$thisを使用する

これは、メンバー変数に値を入力する必要がある通常のphpファイルです。

try
    {
        $add_advert = new Site();
        $add_advert->add_time = mysqli_real_escape_string($link, $_POST['time']);
        $add_advert->add_url = mysqli_real_escape_string($link, $_POST['URL']);
        $add_advert->add_advertisement($_FILES);
        $feedback = "<div class='succes'>Advertisement succesfully added!</div>";
    }
    catch(Exception $e)
    {
        $feedback = "<div class='error'>";
        $feedback .= $e->getMessage();
        $feedback .= "</div>";
    }

メンバー変数:

class Site
{   

    protected $add_url;
    protected $add_time;
    protected $extend_id;

セッターとゲッター:

public function __set($p_sProperty, $p_sValue)
{
    switch($p_sProperty)
    {
        case "add_url":
            $this->add_url = $p_sValue;
        break;
        case "add_time":
            $this->add_time = $p_sValue;
        break;
        case "extend_id":
            $this->extend_id = $p_sValue;
        break;
    }
}//end of setter


public function __get($p_sProperty)
{
    $vResult = "";
    switch($p_sProperty)
    {
        case "add_url":
            $vResult = $this->add_url;
        break;
        case "add_time":
            $vResult = $this->add_time;
        break;
        case "extend_id":
            $vResult = $this->extend_id;
        break;
    }
    return $vResult;
}// end of getter

$ thisオブジェクトを使用する関数(これは関数の一部にすぎません)で、問題を引き起こしているのは$this->add_timeです。

public static function add_advertisement($files)
    {
        global $link, $userid, $useridentify;

        if(!isset($files['image']['tmp_name']) || empty($files['image']['tmp_name'])):
            throw new exception("No image given, enter an image please.");
        endif;

        if($_POST['URL'] == NULL || $_POST['URL'] == "http://"):
            throw new exception("No url given, enter a valid url please.");
        endif;

        if($_POST['time'] == NULL):
            throw new exception("You did not select any option to advertise. Select one of the available advertising options.");
        endif;

        if(!$path = Uploader::upload_file($files, 'images/', 'gif|jpg|jpeg|jpe|png', 300000)):
            throw new exception("Could not upload the image.");
        endif;

        if(self::get_balance() >= $this->add_time):
4

2 に答える 2

7

$this静的メソッドでは使用できません。静的メソッドには、定義上、関連付けられたインスタンスはありません。

于 2010-06-21T16:33:43.387 に答える
3

$this処理するインスタンス化がないため、静的関数で使用することはできません。

于 2010-06-21T16:33:22.237 に答える