php--面向对象--类的静态成员
来源:互联网 发布:矩阵中rank什么意思 编辑:程序博客网 时间:2024/05/18 03:23
静态成员
定义:指的是逻辑上被所有的对象所共享,属于类的成员称之为类的静态成员!
静态成员在类中的逻辑结构:
存在:表明该静态属性或该静态方法是对象所共有.
声明:表明该属性或方法是对象所独有.
场景:若要完成一个学生计数器,当学生被实例化一次,$count就加1,当对象销毁时,$count就减1。
如果使用成员属性:
能否完成我们所需要的业务逻辑呢?
结果如下:
很显然没有成功,那么这是为什么呢?
由上图我们得知,如果我们要完成一个计数器,首先这个count不能是当前对象独有的数据,因为每次实例化得到的count是当前对象的count,与下次实例化得到的count 不同,count的内容归当前对象所独有,只有当count是对象所共有的数据是,结果才能改变。那么我们可以通过全局变量来实现。
使用全局变量:
结果会正确吗?
结果完美!
定义了全局变量,如果想要在类中使用需要使用$GLOBALS[‘变量名’] 来进行访问。
但是思考一下,我们这样定义了全局变量 count,可是这个count除了可以表示学生数量是不是也可以表示别的业务逻辑?
全局变量不应该属于任何的对象或者类。$count 与 Student没有丝毫的逻辑上的联系!
显然,应该找一个能够被对象所共有并且能够在多个方法内使用的变量,还应该与当前的对象类有逻辑的关系的数据。
可以使用类的静态成员!
存在:表明该静态属性或该静态方法是对象所共有.
声明:表明该属性或方法是对象所独有.
回到上面的静态成员逻辑结构图
静态属性存在是什么意思?
就是指这个数据本身存在类里面,而不是实例化对象后存在当前对象内。
比如我们var_dump一个含有静态属性的对象,看看它内部有什么
结果如下:
我们看到了,除了一个成员属性names,并没有显示count,说明了静态属性并不是在实例化后才有,而是在类里面已经存储过了。
静态成员语法
声明
额外增加一个 static 关键字!
属性:
访问
->访问对象成员
因此,应该使用类访问,
类 :: 成员!
::,静态访问符,类访问符(范围解析操作符)
在构造方法中,访问到,++!
类似于$this,同样存在一个self关键字(注意没有$),在类中,代表当前类!
$this:这个对象, $this->
self:类自己,self::
使用静态成员:
实例化
结果如下:
完美!
注意
1, 访问上,静态成员只能使用::静态访问符号访问!
典型的,::前应该是类,类内可以使用self。
但是,php支持: 对象::静态成员!
- php--面向对象--类的静态成员
- php面向对象语法2:类的静态成员
- Php面向对象—静态成员
- PHP面向对象的编程(类成员方法用法)
- C#面向对象之静态成员和静态类
- 面向对象,静态变量、类与对象、成员变量
- C#——面向对象——静态成员和静态类——静态成员
- php面向对象之类成员
- 面向对象的程序设计学习笔记-17-静态成员数据
- 友元与静态成员---面向对象的妥协
- 面向对象_静态变量和成员变量的区别
- PHP面向对象:对象中成员的访问
- php面向对象(OOP)—类、对象、成员
- 【C++面向对象】类的静态成员函数(static member functions)
- C++面向对象小结--静态成员函数
- PHP面向对象静态变量
- PHP面向对象:封装--私有成员的访问
- C#——面向对象——静态成员和静态类——静态类
- Python学习笔记(四)——高级特性
- mybatis执行批量更新batch update 的方法(oracle,mysql)
- Install Caffe on Ubuntu 14
- 无法正常安装Nessus
- 关于YUM
- php--面向对象--类的静态成员
- 如何根据模型来画决策面?
- 职业规划指导:消化这些技巧能让你升值一倍!!!
- 满目容器,风卷战旗过大关: 解读今年云计算趋势(4)
- 操作系统一些点(待整理)
- Mosquitto 单向SSL配置
- MFC Windows程序设计--对话框,属性表
- Github全面详解-03查找和探索开源项目
- 细分化的SaaS是双刃剑:解读今年云计算趋势(5)