2011-06-30 12 views
6

Tengo problemas para llamar a método de clase desde una cadena en PHP. Aquí hay un ejemplo simple. Una vez que lo obtenga, usaré una variable como nombre del método.Llamar método php class desde cadena con el parámetro

Así es como me gustaría estar llamando el método normalmente:

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

Así es como estoy tratando pero conseguir un error:

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

Debo estar perdiendo el alcance, pero puedo' t averiguar cómo llamar al método.

---- EDITAR dimos cuenta de que este llama al método pero $ fila no está definido ahora creo

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

bloque de código completo:

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

Respuesta

15

Cuando desea llamar a un método en un objec t con call_user_func() que tiene que pasar una matriz con el primer elemento como el nombre del objeto o clase que el método será llamado en y el segundo elemento es el nombre del método, por ejemplo:

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

Prueba esto:

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

Uso esto:

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

Cuestiones relacionadas