2016-02-18 17 views
0

我有這個php類,我不知道如何使用它。我知道一點點的PHP,但我不知道如何使用/調用一個類。如何在php中使用類

<?php 


Class Checkserver { 
    static function getString(&$packet){ 
     $str = ""; 
     $n = strlen($packet); 
     for($i=0;($packet[$i]!=chr(0)) && ($i < $n);++$i) 
     $str .= $packet[$i]; 
     $packet = substr($packet, strlen($str)); 
     return trim($str); 
    } 
    static function getChar(&$packet){ 
     $char = $packet[0]; 
     $packet = substr($packet, 1); 
     return $char; 
    } 
    function serverInfo($server) { 
     list($ip,$port) = explode(":", $server); 
     $fp = @fsockopen('udp://'.$ip, $port); 
     if($fp) { 
     stream_set_timeout($fp, 2); 
     fwrite($fp,"\xFF\xFF\xFF\xFFTSource Engine Query\0\r"); 
     $temp = fread($fp, 4); 
     $status = socket_get_status($fp); 
     if($status['unread_bytes']>0) { 
      $temp = fread($fp, $status['unread_bytes']); 
      $version = ord(self::getChar($temp)); 
      $array = array(); 
      $array['status'] = "1"; 
      if($version == 109) { 
       $array['ip'] = self::getString($temp); 
       $temp = substr($temp, 1); 
       $array['hostname'] = self::getString($temp); 
       $temp = substr($temp, 1); 
       $array['mapname'] = self::getString($temp); 
       $temp = substr($temp, 1); 
       self::getString($temp); 
       $temp = substr($temp, 1); 
       self::getString($temp); 
       $temp = substr($temp, 1); 
       $array['players'] = ord(self::getChar($temp)); 
       $array['maxplayers'] = ord(self::getChar($temp)); 
      } elseif($version == 73) { 
       self::getChar($temp); 
       $array['hostname'] = self::getString($temp); 
       $temp = substr($temp, 1); 
       $array['mapname'] = self::getString($temp); 
       $temp = substr($temp, 1); 
       self::getString($temp); 
       $temp = substr($temp, 1); 
       self::getString($temp); 
       $temp = substr($temp, 3); 
       $array['players'] = ord(self::getChar($temp)); 
       $array['maxplayers'] = ord(self::getChar($temp)); 
      } 
     } else { 
      $array['hostname'] = 'Server offline'; 
      $array['mapname'] = '-'; 
      $array['players'] = '0'; 
      $array['maxplayers'] = '0'; 
      $array['status'] = '0'; 
     }    
     } 
     return $array; 


    } 


} 

?> 

我曾嘗試在同一文件中寫這來查詢服務器,其中類是:

<?php 

    $newServer = serverInfo(); 
    $date = $newServer->serverInfo("127.0.0.1:27015"); 
?> 

但我無法得到它的工作。如何使用udp查詢服務器,並使用此類打印輸出?

回答

0

serverInfo屬於這個類,所以你需要創建一個類的新實例,然後才能使用它。

$newServer = new Checkserver(); 
$date = $newServer->serverInfo("127.0.0.1:27015"); 
+0

當我這樣做時,我沒有得到任何輸出。任何想法爲什麼? – usersubuser

+0

@usersubuser因爲該函數可能返回一個數組。你需要print_r($ date);查看數組中的響應或循環並回顯值 – Phil