2011-06-30 47 views
6

Tôi gặp sự cố khi gọi phương thức lớp từ một chuỗi trong PHP. Đây là một ví dụ đơn giản. Khi tôi làm việc này, tôi sẽ sử dụng một biến làm tên phương thức.Gọi phương thức lớp php từ chuỗi với tham số

Đây là cách tôi muốn được gọi là phương pháp thông thường:

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

Đây là cách tôi đang cố gắng nhưng nhận được một lỗi:

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

tôi phải mất một phạm vi nhưng tôi có thể' t tìm ra cách gọi phương thức.

---- EDIT đặn ra rằng đây gọi là phương pháp nhưng $ row là undefined bây giờ tôi tin

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

Full khối mã:

$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 
       ); 
     } 

Trả lời

15

Khi bạn muốn gọi phương thức trên objec t với call_user_func(), bạn phải vượt qua nó một mảng với các yếu tố đầu tiên là đối tượng hay lớp tên đó phương pháp này sẽ được gọi vào và yếu tố thứ hai là tên của phương pháp này, ví dụ:

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

Hãy thử điều này:

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

Sử dụng này:

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

Các vấn đề liên quan