0

このコードでエラーが発生する理由を知っている人はいますか? 「致命的なエラー: オブジェクト コンテキストではないときに $this を使用しています」 これは、動作させようとしているスクリプトの一部です。

ありがとう

    function add($is_general_media, $title, $description, $allowed_extensions, $display) {
    $db = new db;

    if (User::isAdmin()) { 
        $parentID = $db->sanitize_to_db($parentID);
        $is_general_media = $db->sanitize_to_db($is_general_media);
        $title = $db->sanitize_to_db($title);
        $description = $db->sanitize_to_db($description);
        $allowed_extensions = $db->sanitize_to_db($allowed_extensions);
        $display = ($display == 'grid') ? 'grid' : 'list';
        if (strtolower(get_class($this)) == "mediaarea"); {
             function parentID();{
            $parentID = $this->getID();
            }
        } else {
            $parentID = 0;
        }
        if (!$title) {
            $title = '(Untitled Area)';
        }
        $q = "insert into DarkRoom_Areas (title, description, image_max_width, image_max_height, image_max_thumbnail_width, image_max_thumbnail_height, is_general_media, parent_id, allowed_extensions, display) values ('$title','$description'," . MEDIA_DEFAULT_MAX_WIDTH . "," . MEDIA_DEFAULT_MAX_HEIGHT . "," . MEDIA_DEFAULT_MAX_THUMBNAIL_WIDTH . "," . MEDIA_DEFAULT_MAX_THUMBNAIL_HEIGHT . ",  $is_general_media, $parentID, '$allowed_extensions', '$display')";
        $r = mysql_query($q);
        if ($r) {
            $ma = MediaArea::get(mysql_insert_id());
            return $ma;
        } else {
            $e = new Error();
            $e->add(mysql_error());
            return $e;
        }
    }
}
4

1 に答える 1

2

クラス宣言を省略しない限り、それは通常の関数のように見えます。$thisクラス内でのみ使用できます。詳細については、クラスに関する PHP ドキュメントを参照してください。

また、この機能:

function parentID();{
    $parentID = $this->getID();
}

関係なく問題を引き起こします。$thisは のスコープ内にないためparentID()、これをパラメーターとして渡し、変数名を変更する必要があります。

于 2012-08-04T02:02:50.647 に答える