I am having trouble calling a class method from a string in PHP. Here's a simple example. Once I get this working I'll be using a variable as the method name.
Here's how I'd be calling the method normally:
$tags_array = $this->get_tags_for_image($row["id"]);
Here's how I'm trying but getting an error:
$tags_array = call_user_func('get_images_for_tag', $row["id"]);
I must be missing the scope but I can't figure out how to call the method.
----EDIT Figured out that this calls the method but $row is undefined now I believe
$tags_array = call_user_func(array($this, 'get_images_for_tag'), $row["id"]);
Full code block:
$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
);
}
When you want to call a method on an object with call_user_func() you have to pass it an array with the first element as the object or class name that the method will be called on and the second element being the name of the method, e.g.:
$tags_array = call_user_func( array($this,'get_images_for_tag'), $row["id"]);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With