我不熟悉PHP OOP,現在我遇到了一些麻煩。我在結構化編程(而不是OOP)中開發我的項目,並且我已經包含了一個類(由其他人制作),並且在我的結構化函數中,我必須初始化類並執行其他操作。如果你不明白我在這裏打字,請觀看代碼:php中的函數調用構造函數並初始化對象
<?php
require __DIR__ . '/SourceQuery/SourceQuery.class.php';
function get_server_info($ip, $port){
define('SQ_SERVER_ADDR', $ip);
define('SQ_SERVER_PORT', $port);
define('SQ_TIMEOUT', 5);
define('SQ_ENGINE', SourceQuery :: GOLDSOURCE);
$Query = new SourceQuery();
try
{
$Query->Connect(SQ_SERVER_ADDR, SQ_SERVER_PORT, SQ_TIMEOUT, SQ_ENGINE);
$result = (array)$Query->GetInfo();
}
catch(Exception $e)
{
$result = array('Players' => 0, 'MaxPlayers' => 0);
}
$Query->Disconnect();
unset($Query);
return array('players' => $result['Players'], 'max_players' => $result['MaxPlayers']);
}
?>
基本上我創建了一個名爲函數get_server_info它構造一個SourceQuery對象。我正在查詢Counter-Strike服務器的玩家人數和最大玩家人數。
我不知道這是否正確編程(與OOP混合結構)。我不想在類中更改代碼或創建方法,我想使用我的函數。每次調用都會得到結果(get_server_info()),但問題是每個結果都是一樣的!
例如:
for($i = 0; $i < 30; $i++){
$result = get_server_info('66.55.44.3'.$i, 27015);
echo $result['players'].' - '.$result['max_players'].'<br />';
}
結果爲任何服務器一樣! (是的,他們都在運行)。當我檢查我的服務器查看器程序中的服務器時,他們有不同數量的玩家,但是我從這個循環得到的結果是一樣的!我不知道爲什麼。
如果我手動逐個查詢,我得到正確的結果。
我認爲這是因爲該對象沒有被刪除或....我不知道。
你究竟在哪裏有'哪個在你的代碼中構造一個SourceQuery對象? – 2013-03-20 21:31:39
對不起,我忘記了添加代碼 – 2013-03-20 21:35:14