変更しようとするときは、例外をスローします。
質問する
18836 次
7 に答える
24
クラスプロパティの解決策は次のようになると思います:
- 興味のある名前のプロパティを定義しないでください
__get
「偽の」名前を使用して、マジックメソッドを使用してそのプロパティにアクセスします__set
そのプロパティを設定しようとすると例外がスローされるようにメソッドを定義します。- マジック メソッドの詳細については、オーバーロードを参照してください。
変数については、書き込みを試みたときに PHP が例外をスローする読み取り専用の変数を持つことはできないと思います。
たとえば、この小さなクラスを考えてみましょう:
class MyClass {
protected $_data = array(
'myVar' => 'test'
);
public function __get($name) {
if (isset($this->_data[$name])) {
return $this->_data[$name];
} else {
// non-existant property
// => up to you to decide what to do
}
}
public function __set($name, $value) {
if ($name === 'myVar') {
throw new Exception("not allowed : $name");
} else {
// => up to you to decide what to do
}
}
}
クラスをインスタンス化し、プロパティを読み取ろうとしています:
$a = new MyClass();
echo $a->myVar . '<br />';
期待される出力が得られます:
test
プロパティに書き込もうとしている間:
$a->myVar = 10;
例外が発生します:
Exception: not allowed : myVar in /.../temp.php on line 19
于 2010-02-26T18:16:10.530 に答える
15
class test {
const CANT_CHANGE_ME = 1;
}
そしてあなたはそれを次のように参照しますtest::CANT_CHANGE_ME
于 2010-02-26T18:13:35.883 に答える
1
定数を使用します。キーワードconst
于 2010-02-26T18:15:52.147 に答える