2012-06-20 4 views
1

Привет и привет всем,Вызывающие Классы в Еогеасп только последнего вызова работает

Я написал скрипт, который читает строку с одной или более строк. Затем эти строки будут считываться в массиве, чтобы пройти через него. Каждая строка содержит класс и метод, который вызывается в foreach. результат вызванного метода сохраняется в возвращаемом var.

Моя проблема в том, что только последний вызов выполняется всеми другими вызовами, прежде чем вернуть мне, что метод не существует, даже если я изменяю порядок строк, всегда работает последний вызов. Это включает в себя, что все методы существуют и работают.

линии выглядят как этот

class_1/method1 class_2/method2 class_2/method1

данного массива я Переберите с Еогеасп выглядит следующим образом

массива (

[0] => class_1/method1 [1] => class_2/method2 [2] => class_2/method1

теперь мой код преобразует каждый элемент в новом массиве, как этот

массив (

[0] => class_1 [1] => метод1

который называет класс class_1 и method1 в нем

мой код это

public function execute_lines($f){ 
    $cont = ""; // contains the results of all calls 

    if($l = $this->get_line_array($f)){ // $l contains the array of all lines 
     foreach($l as $k => $v){   
     if(strpos($v,"/")){  
     $a = explode("/",$v); // $a contanis the array with the class and method and may be further data to be used in the methods called 
     $c = ucfirst($a[0]); // var of the Class 
     $m = strtolower($a[1]); // var of the methode 
     unset($a[0],$a[1]); // delete the first two items so that the array contains only further data 

     if(method_exists($c,$m)){ // see if the method exists 
      $x = new $c(); // instantiate the Class 
      $cont .= $x->e($m,$a); // save result 
      print "-<br />"; // control if the method exits 
     }else{ 
      print "/<br />"; // control if the method does not exists 
     } 
     } 
    } 
    } 
    return $cont; // returns the cont 
    } 

результат будет

"/" "/" , а затем только содержание последний звонок, где все должно быть занято

спасибо за помощь

ответ

1

Если вы читаете строки из файла, то есть символ новой строки добавляется к каждой строке (только последняя строка не имеет его, как это кажется)

изменить код и повторите попытку

foreach($l as $k => $v){  
    $v = trim($v); // trim whitespace 

    if(strpos($v,"/")){ 
     ... 
    } 
} 
+0

Привет немецкого Rumm, , что может быть решением, я не в состоянии thest еще, но я дам вам знать, как можно скорее – user1469027

+0

Hi немецкого Rumm, я просто сделать environmentto проверить ваше решение, и viloa она работала в поле ,Thankx миллион вы спасли мне часы отладки и поиска – user1469027

+0

Привет, немецкий Rumm, я пробовал в своей среде разработки и действительно отлично работает сейчас Thankx again – user1469027

Смежные вопросы