gpt4 book ai didi

php - 如何将 codeigniter 函数名称引用为 native php 函数的回调?

转载 作者:可可西里 更新时间:2023-11-01 00:02:45 25 4
gpt4 key购买 nike

我敢肯定这一定是以前在某个地方问过的,但我找不到答案:

如何从原生 php 函数(如 array_map())的回调参数中引用 Codeigniter 函数的名称?

作为一个简单的例子,我的 CI_Controller 中有这段代码:

function test(){
$row = array('foo', 'bar');
$new_row = array_map('do_the_mapping', $row);
echo $new_row[0];
}

function do_the_mapping($row){
return($row . $row);
}

do_the_mapping() 没有找到第二个函数。那么如何正确引用它呢?

最佳答案

由于 do_the_mapping 是一个对象的方法,而不是一个全局函数(这就是您使用 array_map('do_the_mapping'... 所暗示的意思),您必须在第一个参数中将数组传递给 array_map 函数。

此数组必须包含两项,第一项(索引 0)是对对象实例的引用,第二项(索引 1)是方法名称的字符串表示形式。

例如,如果您的 Controller 类似于以下内容:

class Some_page extends CI_Controller {

public function test()
{
$row = array('foo', 'bar');
$new_row = array_map('do_the_mapping', $row);
echo $new_row[0];
}

public function do_the_mapping($row)
{
return($row . $row);
}

}

你必须改变这个:

array_map('do_the_mapping', $row)

对此:

array_map(array($this, 'do_the_mapping'), $row);

如果您想调用另一个对象的方法,只需将 $this 更改为对该对象实例的引用即可。

关于php - 如何将 codeigniter 函数名称引用为 native php 函数的回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19337865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com