类的成员变量和 属性
2015-11-13 15:08
253 查看
本文章有误,请不要阅读。
1.
对于public 定义的类的变量称为成员变量,譬如:
2.
通过 get开头的方法定义的为属性,譬如:
他们都可以通过$ob->age 访问
3 优先级
如果在一个类中,定义了
如果
1.返回的是public 定义的成员变量, 10
2.如果去掉public $age的定义,那么返回的是魔术方法 22
因为魔术方法对应的是,当某些成员变量不存在的时候,就会访问魔术方法__get
3.如果去掉 __get的方法的定义,才会访问对象的属性,那么返回的是 18
4.上面说的是他们的优先级,下面说的是一些看着有点离谱的事情。
看似是一个赋值的行为,你感觉是给对象的成员变量变量赋值,其实执行的是一个方法,
严格的说类的属性不是一个变量,而是一个方法
但是在代码中的定义,你看不出来赋值的时候是成员变量还是类的属性,因此,在赋值的时候就发生了一些你看不到的事情,呵呵,譬如:
如果上面的代码是封装的,我看是在其他的类中对ob操作
结果:
也就是说我们在给属性aaaaa 赋值,但是函数里面执行的是成员变量bbb的改变,所以这样的代码,就会带来困惑。
1.
对于public 定义的类的变量称为成员变量,譬如:
public $age;
2.
通过 get开头的方法定义的为属性,譬如:
public function getAge() {} public function setAge($age) {}
他们都可以通过$ob->age 访问
3 优先级
如果在一个类中,定义了
class ob{ public $age =10; public function getAge(){ return 18; } public function __get($name) { return 22 ; } }
如果
$ob = new ob(); $ob->age
1.返回的是public 定义的成员变量, 10
2.如果去掉public $age的定义,那么返回的是魔术方法 22
因为魔术方法对应的是,当某些成员变量不存在的时候,就会访问魔术方法__get
3.如果去掉 __get的方法的定义,才会访问对象的属性,那么返回的是 18
4.上面说的是他们的优先级,下面说的是一些看着有点离谱的事情。
看似是一个赋值的行为,你感觉是给对象的成员变量变量赋值,其实执行的是一个方法,
严格的说类的属性不是一个变量,而是一个方法
但是在代码中的定义,你看不出来赋值的时候是成员变量还是类的属性,因此,在赋值的时候就发生了一些你看不到的事情,呵呵,譬如:
class ob{ public $bbb = 1; public function setAaaaa(){ $this->bbb = 9; } public function getAaaaa(){ return 199; } }
如果上面的代码是封装的,我看是在其他的类中对ob操作
$ob = new $ob() echo $ob->aaaaa; echo $ob->bbb; $ob->aaaaa = 10; echo $ob->aaaaa; echo $ob->bbb;
结果:
199 1 199 9
也就是说我们在给属性aaaaa 赋值,但是函数里面执行的是成员变量bbb的改变,所以这样的代码,就会带来困惑。
相关文章推荐
- linux epoll TCP UDP 实例
- 引用Android网络管理博客链接。
- 【OpenStack Cinder】Cinder安装时遇到的一些坑
- ios客户端本地校验iap
- Visual Studio 2015 Community - Full download (ISO)
- 启动WIN10的WLAN热点共享(已经打开了虚拟网络)的BAT
- JAVA编程思想_笔记(十一)
- 环信集成小demo - 1
- java获取WEB-INF下文件(或目录)
- Apache2 httpd.conf配置文件-----详解
- Android重写view时onAttachedToWindow () 和 onDetachedFromWindow ()
- mac升级到10.11.1之后cocoa pods无法使用提示command not found的解决方案。
- 标准的USB设备请求命令
- UITextField属性
- 杭电1039 Easier Done Than Said?
- android build 模式
- JAVA编程思想_笔记(十)
- 在Eclipse统计项目的代码行数
- Zoj 2770 Burn the Linked Camp 差分约束
- Xcode7推出的新优惠:免证书测试