PHP中的值对象

Ema*_*sev 4 php oop

如何创建不允许动态属性的PHP类?

class User
{
  public $username;
  public $password;
}

$user = new User;
$user->username = "bill.gates";

// This is a dynamic property and I need setting it to be considered illegal.
$user->something = 123;
Run Code Online (Sandbox Code Playgroud)

Ali*_*xel 7

拯救的神奇方法:

class User
{
  public $username;
  public $password;

  public function __set($key, $value) {
    throw new Exception('illegal'); // or just trigger_error()
  }
}
Run Code Online (Sandbox Code Playgroud)

  • @leon:不,`__set`只在[试图写入不可访问的属性时]被调用(http://www.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.members ).现有的可见属性不会触发它. (4认同)