PHP salt okunur bir üye değişkeni uygulamak nasıl?

3 Cevap php

Bunu değiştirmek için çalışırken, bir özel durum.

3 Cevap

Ben bir çözüm, sınıf özellikleri, olacaktır varsayalım:

  • Sizi ilgilendiren adıyla bir özellik tanımlamak değil
  • "sahte" adını kullanarak, bu özelliğe erişmek için sihirli __get yöntemi kullanın
  • Bu özelliği ayarlamak için çalışırken bir istisna atar __set yöntemini tanımlar.
  • Sihirli yöntemleri hakkında daha fazla bilgi almak için, Overloading bakın.

Değişkenler için, ben bunu yazmaya çalışıyoruz PHP istisna hangi için salt okunur bir değişken olması mümkün olduğunu sanmıyorum.


For instance, consider this little class :

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
        }
    }
}

Sınıf Instanciating ve özelliği okumaya çalışıyorum:

$a = new MyClass();
echo $a->myVar . '<br />';

Size beklenen çıktıyı alırsınız:

test

Özelliğine yazmak için çalışırken:

$a->myVar = 10;

Sana bir özel durum alırsınız:

Exception: not allowed : myVar in /.../temp.php on line 19
class test {
   const CANT_CHANGE_ME = 1;
}

ve test::CANT_CHANGE_ME olarak bakın

Bir sabitini kullanın. Kelime const