2015-11-16 11 views
5

私はウェブサイト用のツールを開発していますが、私は奇妙な問題、あるいはそれ以上に奇妙な状況を思いつきました。TeamSpeak API for PHPによって変数が変更されています

私はコードを使用してTeamSpeakサーバーからデータを取得しています。私はこの情報を使用して、ユーザーのプロファイルを作成します。

// 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(); 


は、このコードブロックの出力は全く異なる(ますprint_rに注意してください):

$ts3 = TeamSpeak3::factory("serverquery://dadada:[email protected]: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(); 

私が意味するのは、私がclientList()の後に呼び出す関数です変数$aに保存する)がその変数の内容を変更しています。これは、彼らが出力に変数を追加するようなものです。

私は専門的にPHPを学んだことはありません。私はそれを試しています...この動作を正当化するこの言語について何か不足していますか?私がいたら、私はそれをやめるために何ができますか?

ありがとうございます。

+0

まだ問題がありますか? – naurel

+0

はい。私が本当に必要なものではありません。つまり、私の問題を解決することができる何かを考えることができます。しかし、ここで何が起こっているのか本当に理解したいと思います。 –

+0

ちょうどテストし、私が同じ問題を抱えていることを知りました。私はしばらくの間、このAPIを使用しました、そして、私がそれを見ているのは初めてです。私はそれを調べます。 – naurel

答えて

1

あなたがオブジェクト指向プログラミング

$ts3で「オブジェクト」の部分を見ているあなたがオブジェクトからデータを取得してみましょう、いくつかの方法(または機能)と一緒に必要なすべての情報を含むオブジェクトを表します。これらのメソッドの中には、特定のメソッド呼び出しに必要な追加データを取得するために、オブジェクト自体とは異なる処理を行うものがあります。

  • バイク
    • カラー
    • ギア
    • 関数__construct($色、$ギア)
    • this.color = $color; this.gears = $gears
    • 機能のアップグレード():

      は、以下のような単純なオブジェクトを考えてみましょう

    • this.headlight = true; this.gears = 10;

さて、あなたが最初にそれを作成したとき、それが唯一の2つのプロパティがあります

$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()); 

これは、その変数のメモリとプロセッサの使用率を効果的に倍増することに注意してください。

+0

私はあなたが正しいと信じており、これは本当に事実です。私は確かめるために、私は時間を得るときにこれをテストします。ありがとう:) –

関連する問題