【发布时间】:2013-09-13 11:48:02
【问题描述】:
我在 PHP 中有一个这样的类:
class RandomNumberStorer{
var $integers = [];
public function store_number($int){
array_push($this->integers, $int);
}
public function run(){
generate_number('store_number');
}
}
...在其他地方,我有一个将函数作为参数的函数,例如:
function generate_number($thingtoDo){
$thingToDo(rand());
}
所以我初始化了一个RandomNumberStorer 并运行它:
$rns = new RandomNumberStorer();
$rns->run();
我收到一条错误消息,指出“调用未定义函数 store_number”。现在,我知道store_number 在RandomNumberStorer 类中,它更像是一种方法,但有什么方法可以将类方法传递给generate_number 函数?
我曾尝试将store_number 函数移出类,但随后我当然会收到与$this 的引用相关的错误,该引用移出类/实例的上下文。
我想避免将RandomNumberStorer 的实例传递给外部generate_number 函数,因为我在其他地方使用了这个函数。
这甚至可以做到吗?我设想的是这样的:
generate_number('$this->store_number')
【问题讨论】:
-
试试:
generate_number(array($this, 'store_number')) -
@elclanrs 成功了!不知道为什么。
generate_number如何知道如何处理数组? -
这是一个 PHP 功能,请查看下面的答案,有很好的解释。
-
除了是一个骗子,为什么 RandomDataStorer 会有一个方法运行?您的类存储随机数,这使其成为集合/数组数据类型的事物。或者它会生成数字,这使它成为一种服务。为什么会两者兼而有之?这似乎更像是一个设计问题。
标签: php function parameters