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设计模式 Singleton(单例模式)
Jun 26 PHP
深入解析PHP内存管理之谁动了我的内存
Jun 20 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
Apr 05 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
May 19 PHP
py文件转exe时包含paramiko模块出错解决方法
Aug 12 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
Mar 02 PHP
浅谈PHP错误类型及屏蔽方法
May 27 PHP
PHP getNamespaces()函数讲解
Feb 03 PHP
PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
Feb 20 PHP
php设计模式之装饰模式应用案例详解
Jun 17 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
Apr 29 PHP
PHP基于openssl实现非对称加密代码实例
Jun 19 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
wordpress之wp-settings.php
2007/08/17 PHP
Memcache 在PHP中的使用技巧
2010/02/08 PHP
PHP性能优化准备篇图解PEAR安装
2011/12/05 PHP
php通过Chianz.com获取IP地址与地区的方法
2015/01/14 PHP
php数组使用规则分析
2015/02/27 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
jquery 1.4.2发布!主要是性能与API
2010/02/25 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
jQuery代码实现发展历程时间轴特效
2015/07/30 Javascript
jquery实现树形菜单完整代码
2015/12/29 Javascript
vue+springboot前后端分离实现单点登录跨域问题解决方法
2018/01/30 Javascript
详解node.js 下载图片的 2 种方式
2018/03/02 Javascript
详解基于vue的服务端渲染框架NUXT
2018/06/20 Javascript
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
2018/12/05 Javascript
JavaScript中.min.js和.js文件的区别讲解
2019/02/13 Javascript
微信小程序实现动态列表项的顺序加载动画
2019/07/25 Javascript
Vue实现剪贴板复制功能
2019/12/31 Javascript
vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)
2020/02/25 Javascript
[03:47]2015国际邀请赛第三日现场精彩回顾
2015/08/08 DOTA
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python编程开发之日期操作实例分析
2015/11/13 Python
Python实现的FTP通信客户端与服务器端功能示例
2018/03/28 Python
python requests抓取one推送文字和图片代码实例
2019/11/04 Python
python 实现Flask中返回图片流给前端展示
2020/01/09 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
python如何查看安装了的模块
2020/06/23 Python
python Selenium 库的使用技巧
2020/10/16 Python
html5画布旋转效果示例
2014/01/27 HTML / CSS
学期自我鉴定
2013/11/04 职场文书
社区庆八一活动方案
2014/02/02 职场文书
酒店员工检讨书
2014/02/18 职场文书
企业指导教师评语
2014/04/28 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
PostgreSQL解析URL的方法
2021/08/02 PostgreSQL