私はPHPが初めてで、静的変数の使用を練習しています。C++ から学んだ例をつかみ、PHP 用に書き直すことにしました (この記事の下部の例)。
2 つのプライベート変数 (1 つは静的)、コンストラクター、および get メソッドを持つクラスがあります。コンストラクターは、静的変数の値を 2 番目のプライベート変数に割り当ててから、インクリメントします。
<?php
class Something
{
private static $s_nIDGenerator = 1;
private $m_nID;
public function Something() {
$m_nID = self::$s_nIDGenerator++;
echo "m_nID: " . $m_nID . "</br>"; //for testing, can comment this out
}
public function GetID() {
return $m_nID;
}
}
// extra question:
// static variable can be assigned a value outside the class in C++, why not in PHP?
// Something::$s_nIDGenerator = 1;
$cFirst = new Something();
$cSecond = new Something();
$cThird = new Something();
echo $cFirst->GetID() . "</br>";
echo $cSecond->GetID() . "</br>";
echo $cThird->GetID() . "</br>";
?>
9 行目のエコー テストを使用して、m_nID が値を取得しているかどうかを確認します。
m_nID: 1
m_nID: 2
m_nID: 3
しかし、これらの値は"->GetID()" 呼び出しでは返されません。理由はありますか?
編集:これまでの両方の返信でこれは解決しました。両方を「チェック」できたらいいのにと思います。ありがとうございます!同様の問題を抱えている将来の人のために、元のコードをそのまま質問に残します