从字符串中调用带参数的php类方法

7

我在PHP中遇到了一个问题,无法通过字符串调用类方法。这里有一个简单的例子。一旦我解决了这个问题,我将使用一个变量作为方法名。

这是我正常调用方法的方式:

$tags_array = $this->get_tags_for_image($row["id"]);

这里是我的尝试,但出现了错误:
$tags_array = call_user_func('get_images_for_tag', $row["id"]);

我可能漏了作用域, 但我无法弄清如何调用这个方法。

----编辑 我知道如何调用这个方法了,但是我相信$row现在是未定义的。

$tags_array = call_user_func(array($this, 'get_images_for_tag'), $row["id"]);

完整的代码块:

 $images = call_user_func(array($this, 'get_images_for_tag'), $filter);
        foreach ($images as $row){

            $tags_array = call_user_func(array($this, 'get_images_for_tag'), $row["id"]);
            foreach ($tags_array as $tag_row){
                $tags_array[] =  $tag_row["tag"];
            }

            $image_array []= array (
                'url' => $this->gallery_path_url . '/'. $row["name"],
                'thumb_url' => $this->gallery_path_url . '/thumbs/' . 't_'. $row["name"],
                'id' => $row["id"],
                'description' => $row["description"],
                //'url' => $row["url"],
                'tags' => $tags_array
                );
        }
3个回答

16

如果你想使用call_user_func()在一个对象上调用方法,你需要传递一个数组作为参数,该数组的第一个元素是对象或类名,第二个元素是方法名,例如:

$tags_array = call_user_func( array($this,'get_images_for_tag'), $row["id"]);

3

试试这个:

$tags_array = call_user_func(array($yourClassObj, 'get_images_for_tag'), $row["id"]);

1
请使用以下代码:

call_user_method('get_images_for_tag',$this,$row["id"]);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接