0

有没有一种方法可以在不使用“call_user_func”且不使用 eval 的情况下调用类中的函数?

这就是我问的原因:

当我使用“call_user_func”时,我收到“$this not in context”错误:

$this->id = $selectId['id'];
$file = 'score_' . $this->sid . '.php'; //the file with the class

if (@include_once($file)) { //including the file

    $scoreClass = 'Score_' . $this->id;
    call_user_func($scoreClass .'::selectData', $this->user_id);
}

我可以克服这个“不在上下文中”错误调用这样的函数:但现在我的名字不是变量。

$this->id = $selectId['id'];
$file = 'score_' . $this->sid . '.php'; //the file with the class

if (@include_once($file)) { //including the file

    $test = new Score_98673();
    $test->selectData($this->user_id);

}
4

2 回答 2

3
call_user_func(array($score, 'selectData'), $this->user_id);

这是伪类型的正确语法callable
http://php.net/manual/en/language.types.callable.php

你也可以这样做,顺便说一句:

$method = 'selectData';
$score->$method($this->user_id);
于 2013-04-16T13:25:40.600 回答
1
if (@include_once($file)) { //including the file
    $scoreClass = 'Score_' . $this->id;
    $test = new $scoreClass();
    $test->selectData($this->user_id);
}

这就是你所要做的。因为您可以在使用new.

当您调用使用$this.

于 2013-04-16T13:22:37.310 回答