2017-08-12 6 views
0

タイトルに上記のエラーが表示されます。 Get_categoryというクラスでは、Categorizeというクラスから$ arrという静的配列にアクセスしようとしています。ここで

は私がアレイにアクセスしようとしていますGET_CATEGORYクラスである:ここでは

class Get_category extends Controller{ 
     function run($xml){ 
     global $FILE_ROOT, $STORAGE, $REQ_ID, $CMD_EXTRA, $LIB, $BIN; 
     include_once __DIR__.'/categorize.php'; 
     $file = $xml->filename; 
     $arr = Categorize::$arr; 
     /*$arrlength = count($arr);*/ 
    $arrlength = max(array_map('count',self::$arr)); 
     $response = "<parameters>\n<requestID>" . $REQ_ID ."</requestID>\n<requestType>get_category</requestType>"; 

     for($i = 0; $i < self::$arrlength; $i++){ 
     $lengthcolumn = count(self::$arr[$i]); 
      for($j = 0; $j < $lengthcolumn; $j++){ 
       if(self::$arr[$i][$j] == $file){ 
       echo self::$arr[$i][$j]; 
       $response .= "<resource><id>" . self::$arr[$i][$j] . "</id>"; 
     $response .= "</resource>"; 
       } 

      } 

     } 

     $response .= "</parameters>"; 

     return $response; 

     } 

} 

は、静的な配列が配置されている分類クラスである:あなたのGET_CATEGORYクラスで

 class Categorize extends Controller{ 
     public static $arr = array(); 
     function run($xml){ 
       global $FILE_ROOT, $STORAGE, $REQ_ID, $CMD_EXTRA, $LIB, $BIN; 

       $numCategories = intval($xml->numCategories); 
       self::$arr; 
       /*self::$arr = array();*/ 

       /*if(!pe($xml, "resourceList")) die(err("No resources found"));*/ 

       for($i=0;$i < $numCategories; $i++){ 
        $name = intval($xml->nameCat); 
         if($i=0){ 
          self::$arr[0][0] = $name; 
         }else{ 
          self::$arr[$i][0] = $name; 
         } 

       } 
       $j = 0; 
       while($j < $numCategories){ 
        $numDoc = intval($xml->numDoc); 
         $k = 0; 
         foreach($xml->resourceList->resource as $res){ 
            self::$arr[$j][$k] = $res; 
            $k++; 
         } 
        $j++;   
       } 
      $output = "Done!"; 
      $response = "<parameters><requestType>categorize</requestType><requestID>". $REQ_ID . "</requestID><resourceList>". $output . "</resourceList></parameters>"; 

      return $response; 
     } 
} 
+0

'はGlobal' ISN」の使用に変更しました特に良いことに、値をパラメータとして渡すか、クラスのコンストラクタに渡します。 'global'はテストが難しく、依存性注入はもっと柔軟になります。 –

答えて

0

、あなたは静的クラスメンバとしてローカル変数を参照するべきではありません。言い換えれば、あなたのクラスは次のようになります。自己:: $の編曲と自己:: $のarrlengthへのすべての参照して

class Get_category 
{ 
    function run($xml) 
    { 
     global $FILE_ROOT, $STORAGE, $REQ_ID, $CMD_EXTRA, $LIB, $BIN; 

     $file = $xml->filename; 
     $arr = Categorize::$arr; 
     /*$arrlength = count($arr);*/ 
     $arrlength = max(array_map('count', $arr)); 
     $response = "<parameters>\n<requestID>" . $REQ_ID . "</requestID>\n<requestType>get_category</requestType>"; 

     for ($i = 0; $i < $arrlength; $i++) 
     { 
      $lengthcolumn = count($arr[$i]); 
      for ($j = 0; $j < $lengthcolumn; $j++) 
      { 
       if ($arr[$i][$j] == $file) 
       { 
        echo $arr[$i][$j]; 
        $response .= "<resource><id>" . $arr[$i][$j] . "</id>"; 
        $response .= "</resource>"; 
       } 
      } 
     } 

     $response .= "</parameters>"; 

     return $response; 
    } 

} 

は編曲:$と$ arrlength

関連する問題