我不熟悉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