TeamSpeak API for PHP更改了变量

时间:2015-11-16 20:06:24

标签: php api variables teamspeak

我正在开发一个网站工具,我想出了一个奇怪的问题,或者更好,一个奇怪的情况。

我使用下面的代码从TeamSpeak服务器检索数据。我使用此信息在用户上构建个人资料。

form_for

现在,奇怪的情况是这个代码块的输出:

@item

(注意 print_r
与此代码块的输出完全不同:

$ts3 = TeamSpeak3::factory("serverquery://dadada:dadada@dadada:1234/");
// Get the clients list
$a=$ts3->clientList();
// Get the groups list
$b=$ts3->ServerGroupList();
// Get the channels list
$c=$ts3->channelList();

我的意思是,我在// Get the clients list $a=$ts3->clientList(); // Get the groups list $b=$ts3->ServerGroupList(); // Get the channels list $c=$ts3->channelList(); echo "<pre>";print_r($a);die(); 之后调用的函数(我在变量// Get the clients list $a=$ts3->clientList(); // Get the groups list #$b=$ts3->ServerGroupList(); // Get the channels list #$c=$ts3->channelList(); echo "<pre>";print_r($a);die(); 中存储的输出)正在改变该变量的内容。也就是说,他们将输出附加到变量上。

我从来没有专业地学过PHP,我只是尝试一下......我错过了一些关于这种行为的语言吗?如果我是,我该怎么做才能阻止它?

谢谢大家。

1 个答案:

答案 0 :(得分:1)

您在面向对象编程

中看到了“对象”的一部分

$ts3表示包含所需信息的Object,以及一些允许您从对象获取数据的方法(或函数)。其中一些方法将对对象本身执行不同的操作,以便检索特定方法调用所需的其他数据。

考虑以下简单的对象:

  • 自行车
    • 颜色
    • 齿轮
    • function __construct($ color,$ gears)
    • this.color = $color; this.gears = $gears
    • 功能升级()
    • this.headlight = true; this.gears = 10;

现在,当您第一次创建它时,它只有两个属性:

$myBike = new Bike('red',5);
// $myBike.color = 'red';
// $myBike.gears = 5;

...但是升级后,属性已更改,并添加了新属性。

$myBike->upgrade();
// $myBike.color = 'red';
// $myBike.gears = 10;
// $myBike.headlight = true;

对象通常传递引用而不是复制数据,以节省内存。

...但是如果你想确保你得到一个不会改变的副本(即不使用$ts3对象的数据引用),那就克隆变量。

$a = clone($ts3->clientList());

请注意,这将有效地使该变量的内存和处理器使用量翻倍。