从类中调用函数或方法

时间:2010-11-06 23:39:18

标签: php class

我编写了一个数据库类但无法从内部访问该方法:

class database{
.
.
private $mgc;
private $real;
public function insert($table,$values,$row = null){
.
.
 for($i = 0; $i < count($values); $i++){
    $values[$i] = safe_value ($values[$i]);      
    } 
.
.
}
public function safe_value( $value ) {
    if( $this->real ) {  
        if( $this->mgc ) { $value = stripslashes( $value ); }
        $value = mysql_real_escape_string( $value );
    } 
    else {  

        if( !$this->mgc ) { $value = addslashes( $value ); }

    }
    return $value;
} 

}

运行此类时出现此错误:

  

致命错误:调用未定义的函数safe_value()

当我使用mysql_real_escape_string代替safe_value方法时,该类可以完美地运行。为什么我无法访问safe_value函数,为什么它会向我显示此错误?

2 个答案:

答案 0 :(得分:3)

当从类中调用非静态成员函数时,您需要使用$this来引用它,在这种特殊情况下,您应该将其称为

$values[$i] = $this->safe_value($values[$i]);

答案 1 :(得分:1)

对于非静态方法,您需要将调用更改为$values[$i] = $this->safe_value($values[$i]);。对于静态方法,请使用$values[$i] = database::safe_value($values[$i])