2011-06-30 10 views
6

के साथ स्ट्रिंग से php क्लास विधि को कॉल करें मुझे PHP में स्ट्रिंग से क्लास विधि पर कॉल करने में समस्या हो रही है। यहां एक साधारण उदाहरण है। एक बार जब मैं यह काम कर लेता हूं तो मैं एक वैरिएबल का उपयोग विधि नाम के रूप में करूँगा।पैरामीटर

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

यहाँ मैं कैसे कोशिश कर रहा हूँ लेकिन एक त्रुटि हो रही है:

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

मैं गुंजाइश लापता किया जाना चाहिए, लेकिन मैं कर सकते हैं '

यहाँ कैसे मैं विधि सामान्य रूप से बुला होगी है विधि को कॉल करने के तरीके को समझें।

---- संपादित पता लगा यह कहता है कि विधि लेकिन $ पंक्ति अपरिभाषित है अब मेरा मानना ​​है कि

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

उत्तर

15

जब आप objec पर कोई विधि कॉल करना चाहते हैं 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', $ यह, $ पंक्ति ["id"]);