PHP魔术方法中属性重载方法 __set()与__get()方法及__isset() 与 __unset(),属性重载只能在对象中进行,在静态方法中,这些魔术方法将不会被调用,自定义方法名称时要尽量避免和魔术方法同名方法名称,重载方法都必须被声明为 public。
在给不可访问属性赋值时,__set() 会被调用(如果属性变量为public时__set()方法将不会被调用);在读取不可访问属性赋值时,__get() 会被调用(如果属性变量为public时__get()方法将不会被调用)。
当对不可访问属性调用 isset() 或 empty() 时,__isset() 会被调用;当对不可访问属性调用 unset() 时,__unset() 会被调用。
1、给私有变量james赋值(或不存在的变量james1)时,将会调用魔术方法__set()
如果没有魔术方法__set()将会抛出错误
如果james变量改成public的话,没有魔术方法也可以正常赋值
2、读取私有变量james值(或不存在的变量时,如:james1)时,将会调用魔术方法__get(),如果没有魔术方法__get()将会报错
3、对私有变量或不存在的变量调用isset和empty时,会触发__isset()魔术方法(PHP 5.1.0之后版本支持)
4、对私有变量或不存在的变量调用unset时,会触发__unset()魔术方法(PHP 5.1.0之后版本支持)
领取专属 10元无门槛券
私享最新 技术干货