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.ini中的php-5.2.0配置指令详解
Mar 27 PHP
PHP 出现乱码和Sessions验证问题的解决方法!
Dec 06 PHP
PHP文件操作实现代码分享
Sep 01 PHP
PHP中return 和 exit 、break和contiue 区别与用法
Apr 09 PHP
PHP中计算字符串相似度的函数代码
Dec 29 PHP
为PHP5.4开启Zend OPCode缓存
Dec 26 PHP
简单介绍PHP非阻塞模式
Mar 03 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
Mar 07 PHP
php发送http请求的常用方法分析
Nov 08 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
Jul 27 PHP
CI框架(CodeIgniter)公共模型类定义与用法示例
Aug 10 PHP
TP5.0框架实现无限极回复功能的方法分析
May 04 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图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
2010/12/02 PHP
iis下php mail函数的sendmail配置方法(官方推荐)
2012/04/25 PHP
解读PHP的Yii框架中请求与响应的处理流程
2016/03/17 PHP
php cookie 详解使用实例
2016/11/03 PHP
在jQuery中处理XML数据的大致方法
2015/08/14 Javascript
JS+CSS实现六级网站导航主菜单效果
2015/09/28 Javascript
JS高级运动实例分析
2016/12/20 Javascript
简单谈谈关于 npm 5.0 的新坑
2017/06/08 Javascript
一个Js文件函数中调用另一个Js文件函数的方法演示
2017/08/14 Javascript
vue 弹框产生的滚动穿透问题的解决
2018/09/21 Javascript
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
2019/03/02 NodeJs
layui switch 开关监听 弹出确定状态转换的例子
2019/09/21 Javascript
微信小程序本地存储实现每日签到、连续签到功能
2019/10/09 Javascript
JS自定义右键菜单实现代码解析
2020/07/16 Javascript
[29:10]Ti4 冒泡赛第二天 NEWBEE vs Titan 3
2014/07/15 DOTA
pandas pivot_table() 按日期分多列数据的方法
2018/11/16 Python
python爬虫 Pyppeteer使用方法解析
2019/09/28 Python
Pycharm中配置远程Docker运行环境的教程图解
2020/06/11 Python
python导入库的具体方法
2020/06/18 Python
HTML5 Canvas 起步(2) - 路径
2009/05/12 HTML / CSS
HTML中fieldset标签概述及使用方法
2013/02/01 HTML / CSS
html标签之Object和EMBED标签详解
2013/07/04 HTML / CSS
美国领先的在线旅游网站:Orbitz
2018/11/05 全球购物
德国综合购物网站:OTTO
2018/11/13 全球购物
可以在一个PHP文件里面include另外一个PHP文件两次吗
2015/05/22 面试题
八年级英语教学反思
2014/01/09 职场文书
三年级科学教学反思
2014/01/29 职场文书
荷叶母亲教学反思
2014/04/30 职场文书
2014年民政局关于保密工作整改措施
2014/09/19 职场文书
意外伤害赔偿协议书范文
2014/09/23 职场文书
中考学习决心书
2015/02/04 职场文书
汽车销售员岗位职责
2015/04/11 职场文书
2016学习雷锋精神活动倡议书
2015/04/27 职场文书
安全生产感想
2015/08/07 职场文书
Vue Element-ui表单校验规则实现
2021/07/09 Vue.js
Vue操作Storage本地化存储
2022/04/29 Vue.js