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 中文乱码解决办法总结分析
Jul 30 PHP
两个开源的Php输出Excel文件类
Feb 08 PHP
php中理解print EOT分界符和echo EOT的用法区别小结
Feb 21 PHP
PHP设计模式 注册表模式(多个类的注册)
Feb 05 PHP
Memcached常用命令以及使用说明详解
Jun 27 PHP
查找php配置文件php.ini所在路径的二种方法
May 26 PHP
PHP采集静态页面并把页面css,img,js保存的方法
Dec 23 PHP
浅析php静态方法与非静态方法的用法区别
May 17 PHP
PHP中函数gzuncompress无法使用的解决方法
Mar 02 PHP
PHP有序表查找之二分查找(折半查找)算法示例
Feb 09 PHP
PHP分页显示的方法分析【附PHP通用分页类】
May 10 PHP
Laravel 数据库加密及数据库表前缀配置方法
Oct 10 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制作新闻系统的思路
2006/10/09 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
插件:检测javascript的内存泄漏
2007/03/04 Javascript
给Javascript数组插入一条记录的代码
2007/08/30 Javascript
jQuery 核心函数以及jQuery对象
2010/03/23 Javascript
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
2012/01/15 Javascript
jquery $(this).attr $(this).val方法使用介绍
2013/10/08 Javascript
JavaScript初学者建议:不要去管浏览器兼容
2014/02/04 Javascript
Javascript动画效果(4)
2016/10/11 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
2017/09/15 Javascript
node文件批量重命名的方法示例
2017/10/23 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
2018/01/08 Javascript
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
详解webpack自定义loader初探
2018/08/29 Javascript
JS控制GIF图片的停止与显示
2019/10/24 Javascript
微信小程序登陆注册功能的实现代码
2019/12/10 Javascript
vue中渲染对象中属性时显示未定义的解决
2020/07/31 Javascript
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
Python中的defaultdict模块和namedtuple模块的简单入门指南
2015/04/01 Python
Python中functools模块函数解析
2017/03/12 Python
Python将多个excel表格合并为一个表格
2021/02/22 Python
浅谈Python爬虫原理与数据抓取
2020/07/21 Python
Html5 Geolocation获取地理位置信息实例
2016/12/09 HTML / CSS
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
木马的传播途径主要有哪些
2016/04/08 面试题
经管应届生求职信
2013/11/17 职场文书
自动化毕业生专业自荐书范文
2014/02/04 职场文书
信访工作经验交流材料
2014/05/23 职场文书
求职意向书
2014/07/29 职场文书
感谢信格式范文
2015/01/22 职场文书
电气工程师岗位职责
2015/02/12 职场文书
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP
Python jiaba库的使用详解
2021/11/23 Python
Nginx静态压缩和代码压缩提高访问速度详解
2022/05/30 Servers
JS class语法糖的深入剖析
2022/07/07 Javascript