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 相关文章推荐
第七节--类的静态成员
Nov 16 PHP
推荐个功能齐全的发送PHP邮件类
Jan 03 PHP
从php核心代码分析require和include的区别
Jan 02 PHP
php中stream(流)的用法
Mar 25 PHP
php判断页面是否是微信打开的示例(微信打开网页)
Apr 25 PHP
PHP解决URL中文GBK乱码问题的两种方法
Jun 03 PHP
PHP整合PayPal支付
Jun 11 PHP
带你了解PHP7 性能翻倍的关键
Nov 19 PHP
PHP使用file_get_content设置头信息的方法
Feb 14 PHP
php操纵mysqli数据库的实现方法
Sep 18 PHP
PHP面向对象程序设计方法实例详解
Dec 24 PHP
详解阿里云视频直播PHP-SDK接入教程
Jul 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中文件上传的安全问题
2006/10/09 PHP
PHP在Web开发领域的优势
2006/10/09 PHP
我的论坛源代码(五)
2006/10/09 PHP
PHP中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
2010/07/09 PHP
PHP sprintf() 函数的应用(定义和用法)
2012/06/29 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
2019/09/26 PHP
基本jquery的控制tabs打开的数量的代码
2010/10/17 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
NodeJS使用jQuery选择器操作DOM
2015/02/13 NodeJs
基于Arcgis for javascript实现百度地图ABCD marker的效果
2015/09/12 Javascript
JS作为值的函数用法示例
2016/06/20 Javascript
jQuery EasyUI提交表单验证
2016/07/19 Javascript
js中json处理总结之JSON.parse
2016/10/14 Javascript
jQuery中animate的几种用法与注意事项
2016/12/12 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
快速使用node.js进行web开发详解
2017/04/26 Javascript
React中上传图片到七牛的示例代码
2017/10/10 Javascript
关于react中组件通信的几种方式详解
2017/12/10 Javascript
在Vue中使用echarts的方法
2018/02/05 Javascript
webpack4.x打包过程详解
2018/07/18 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
利用React高阶组件实现一个面包屑导航的示例
2020/08/23 Javascript
[03:56]还原FTP电影首映式 DOTA2群星拼出遗迹世界
2014/03/26 DOTA
Python 结巴分词实现关键词抽取分析
2017/10/21 Python
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
基于Html5实现的react拖拽排序组件示例
2018/08/13 HTML / CSS
html+css实现自定义图片上传按钮功能
2019/09/04 HTML / CSS
英国最大的百货公司:Harrods
2016/08/18 全球购物
Herve Leger官网:标志性绷带连衣裙等
2018/12/26 全球购物
某公司部分笔试题
2013/11/05 面试题
档案检查欢迎词
2014/01/13 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书
JavaScript 防篡改对象的用法示例
2021/04/24 Javascript
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2022/04/07 Python