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自动生成月历代码
Oct 09 PHP
PHP4实际应用经验篇(2)
Oct 09 PHP
基于数据库的在线人数,日访问量等统计
Oct 09 PHP
mysql5的sql文件导入到mysql4的方法
Oct 19 PHP
PHP form 表单传参明细研究
Jul 17 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
Jul 02 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
Jun 22 PHP
PHP  Yii清理缓存的实现方法
Nov 10 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
PHP小程序支付功能完整版【基于thinkPHP】
Mar 26 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
Mar 09 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
分享一个漂亮的php验证码类
2016/09/29 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
javascript getElementsByName()的用法说明
2009/07/31 Javascript
JS 实现完美include载入实现代码
2010/08/05 Javascript
纯JS实现的批量图片预览加载功能
2011/08/14 Javascript
浅析Prototype的模板类 Template
2011/12/07 Javascript
Js保留小数点的4种效果实现代码分享
2014/04/12 Javascript
input:checkbox多选框实现单选效果跟radio一样
2014/06/16 Javascript
jquery库文件略庞大用纯js替换jquery的方法
2014/08/12 Javascript
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
2015/08/23 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
jQuery基于ajax()使用serialize()提交form数据的方法
2015/12/08 Javascript
JavaScript中文件上传API详解
2016/04/01 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
2016/06/12 Javascript
js实现楼层效果的简单实例
2016/07/15 Javascript
利用node.js搭建简单web服务器的方法教程
2017/02/20 Javascript
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
dts文件中删除一个node或属性的操作方法
2018/08/05 Javascript
微信小程序左滑删除功能开发案例详解
2018/11/12 Javascript
[01:11:10]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG加赛
2014/05/26 DOTA
[00:43]魔廷新尊——痛苦女王至宝捆绑包
2020/06/12 DOTA
python抓取网页内容示例分享
2014/02/24 Python
举例讲解Python编程中对线程锁的使用
2016/07/12 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
2019/03/01 Python
pandas 空数据处理方法详解
2019/11/02 Python
Tensorflow训练模型越来越慢的2种解决方案
2020/02/07 Python
adidas美国官网:adidas US
2016/09/21 全球购物
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
出国签证在职证明范本
2014/11/24 职场文书
工程资料员岗位职责
2015/04/13 职场文书
Vue全家桶入门基础教程
2021/05/14 Vue.js
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
2022/04/09 Javascript
详解Python中的for循环
2022/04/30 Python