在 PHP 中,类的成员变量也被称为属性。这种代码的重复会导致 bug,这种实践显然需要尽可能避免。如果某类需要支持这个特性,只需要继承 yii\base\Object 或其子类即可。尝试赋值给这样的属性将导致 yii\base\InvalidCallException 异常。类似的,只有 setter 方法而没有 getter 方法定义的属性是只写属性,尝试读取这种属性也会触发异常。通过 getter 和 setter 定义的属性也有一些特殊规则和限制:这类属性的名字是不区分大小写的。如,$object->label 和 $object->Label 是同一个属性。因为 PHP 方法名是不区分大小写的。Yii正是利用这点,提供对属性的支持的。如果修改某一属性,会调用相应的setter函数。
暂无评论