使用参数从字符串调用php类方法

时间:2011-06-30 06:55:27

标签: php

我无法从PHP中的字符串调用类方法。这是一个简单的例子。一旦我开始工作,我将使用变量作为方法名称。

以下是我正常调用该方法的方法:

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

以下是我正在尝试但却出错:

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

我必须错过范围,但我无法弄清楚如何调用该方法。

---- EDIT 弄清楚这会调用方法,但 $ 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 个答案:

答案 0 :(得分:16)

如果要使用call_user_func()调用对象上的方法,则必须传递一个数组,其中第一个元素作为将调用该方法的对象或类名,第二个元素是方法的名称,例如:

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

答案 1 :(得分:3)

试试这个:

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

答案 2 :(得分:1)

使用此:

call_user_method( 'get_images_for_tag',$此,$行[ “ID”]);