PHP类的静态(static)方法和静态(static)变量使用介绍


Posted in PHP onFebruary 19, 2012

在php中,访问类的方法/变量有两种方法:
1. 创建对象$object = new Class(),然后使用”->”调用:$object->attribute/function,前提是该变量/方法可访问。
2. 直接调用类方法/变量:class::attribute/function,无论是静态/非静态都可以。但是有前提条件:
A. 如果是变量,需要该变量可访问。
B. 如果是方法,除了该方法可访问外,还需要满足:
b1) 如果是静态方法,没有特殊条件;
b2) 如果是非静态方法,需要改方法中没有使用$this,即没有调用非静态的变量/方法,当然,调用静态的变量/方法没有问题。

然后我们再看一下使用$object->… 和使用class::… 都有什么区别:
1. 使用$object->… ,需要执行构造函数创建对象;
2. 使用class::… 调用静态方法/变量,不需要执行构造函数创建对象;
3. 使用class::… 调用非静态方法/变量,也不需要执行构造函数创建对象。

然后奇怪的地方就出来了,既然2和3都一样,那静态方法/变量存在还有什么意义呢?
差异还是显然存在的,如下:
1. 静态变量
静态成员只保留一个变量值,而这个变量值对所有的实例都是有效,也就是说,所有的实例共享这个成员。
2. 静态方法
静态方法可以直接使用class::… 来调用,而非静态方法需要满足一定限制条件才能使用class::.. 的方法调用,如之前所述

PHP 相关文章推荐
php中使用Imagick实现图像直方图的实现代码
Aug 30 PHP
PHP延迟静态绑定示例分享
Jun 22 PHP
浅谈PHP解析URL函数parse_url和parse_str
Nov 11 PHP
php实现递归的三种基本方式
Jul 04 PHP
PHP实现查询两个数组中不同元素的方法
Feb 23 PHP
PHP发送AT指令实例代码
May 26 PHP
php+ajax注册实时验证功能
Jul 20 PHP
PHP入门教程之会话控制技巧(cookie与session)
Sep 11 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
Nov 29 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
Aug 10 PHP
laravel model 两表联查示例
Oct 24 PHP
PHP中strval()函数实例用法
Jun 07 PHP
php 删除一个数组中的某个值.兼容多维数组!
Feb 18 #PHP
php 获取百度的热词数据的代码
Feb 18 #PHP
php 网上商城促销设计实例代码
Feb 17 #PHP
php中通过curl模拟登陆discuz论坛的实现代码
Feb 16 #PHP
初品cakephp 入门基础
Feb 16 #PHP
php线性表顺序存储实现代码(增删查改)
Feb 16 #PHP
用PHP实现Ftp用户的在线管理
Feb 16 #PHP
You might like
提取HTML标签
2006/10/09 PHP
php模拟js函数unescape的函数代码
2012/10/20 PHP
实例讲解PHP面向对象之多态
2014/08/20 PHP
php删除数组指定元素实现代码
2017/05/03 PHP
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
基于jquery的获取浏览器窗口大小的代码
2011/03/28 Javascript
安装使用Mongoose配合Node.js操作MongoDB的基础教程
2016/03/01 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
jQuery实现右键菜单、遮罩等效果代码
2016/09/27 Javascript
vue.js初学入门教程(1)
2016/11/03 Javascript
jQuery ajax请求struts action实现异步刷新
2017/04/19 jQuery
JS组件系列之JS组件封装过程详解
2017/04/28 Javascript
深入浅出webpack之externals的使用
2017/12/04 Javascript
js控制随机数生成概率代码实例
2019/03/21 Javascript
vue+axios实现post文件下载
2019/09/25 Javascript
JS操作Fckeditor的一些常用方法(获取、插入等)
2020/02/19 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
vue常用高阶函数及综合实例
2021/02/25 Vue.js
[01:03:50]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第二场 2月7日
2021/03/11 DOTA
学习python (2)
2006/10/31 Python
Python标准库笔记struct模块的使用
2018/02/22 Python
对Python中range()函数和list的比较
2018/04/19 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
python启动应用程序和终止应用程序的方法
2019/06/28 Python
python中tkinter的应用:修改字体的实例讲解
2019/07/17 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
Python根据服务获取端口号的方法
2019/09/25 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
Python tkinter三种布局实例详解
2020/01/06 Python
为什么黑客都用python(123个黑客必备的Python工具)
2020/01/31 Python
HTML5 Canvas中绘制椭圆的4种方法
2015/04/24 HTML / CSS
servlet面试题
2012/08/20 面试题
公司总经理岗位职责
2015/04/01 职场文书
行政处罚告知书
2015/07/01 职场文书
redis sentinel监控高可用集群实现的配置步骤
2022/04/01 Redis
Ruby使用Mysql2连接操作MySQL
2022/04/19 Ruby