- ベストアンサー
rubyのクラス変数のようなものは無い?
rubyのクラス変数に相当するものはPHPにはないのでしょうか? つまり、あるクラスの全てのインスタンスで共有する変数です。 DB中に存在する環境固有の値をクラスで保持したいのですが、インスタンスごとにDBアクセスするのは無駄なので、初回インスタンス生成時(is_nullで判断)にのみDBアクセスして、あとはそれを参照するだけにしたい。 globalを使って全体でのグローバル変数にするしかないのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>すいません。staticをつけてみたのですが、うまくいきません。 クラスのstatic変数にアクセスする際にselfをつけてください。 class A { static $x = 0; public $y; function __construct($a){ self::$x = self::$x + 1; $this->y = $a + self::$x *1000; } }
その他の回答 (1)
- fruit893
- ベストアンサー率68% (15/22)
PHPでもclass宣言内にstaticなデータメンバを宣言してやれば使えます。 参考: http://www.shitomi.jp/web/php.html
お礼
できました。ありがとうございました。 staticというキーワードを教えてもらった段階でちゃんと調べればよかった。
補足
すいません。staticをつけてみたのですが、うまくいきません。 class A { static $x; public $y; function __construct($a) { $x=$x+1; $this->y=$a+$x*1000; } } $a1=new A(1); $a2=new A(2); print_r($a1); print_r($a2); で、1001,2002 という結果を期待しているのですが、1001,1002となります。$x が共有されていないということですよね。
お礼
なるほど、static には クラス名:: の前置が要るんですね。ありがとうございました。