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 相关文章推荐
把从SQL中取出的数据转化成XMl格式
Oct 09 PHP
人大复印资料处理程序_查询篇
Oct 09 PHP
PHP5新特性: 更加面向对象化的PHP
Nov 18 PHP
PHP5 操作MySQL数据库基础代码
Sep 29 PHP
php中定义网站根目录的常用方法
Aug 08 PHP
对PHP语言认识上需要避免的10大误区
Jun 12 PHP
ioncube_loader_win_5.2.dll的错误解决方法
Jan 04 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
Nov 25 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
Oct 17 PHP
PHP简单实现防止SQL注入的方法
Mar 13 PHP
PHP实现会员账号单唯一登录的方法分析
Mar 07 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
Oct 16 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来自动调用不同服务器上的flash
2006/10/09 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
2017/01/20 PHP
Yii2实现UploadedFile上传文件示例
2017/02/15 PHP
PHP命名空间namespace及use的简单用法分析
2018/08/03 PHP
Add Formatted Text to a Word Document
2007/06/15 Javascript
javascript权威指南 学习笔记之变量作用域分享
2011/09/28 Javascript
ASP.NET中AJAX 调用实例代码
2012/05/03 Javascript
JQuery为textarea添加maxlength属性并且兼容IE
2013/04/25 Javascript
解决jquery1.9不支持browser对象的问题
2013/11/13 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
2015/12/03 Javascript
JS实现动态给标签控件添加事件的方法示例
2017/05/13 Javascript
微信小程序实现左右联动的实战记录
2018/07/05 Javascript
Vue 实时监听窗口变化 windowresize的两种方法
2018/11/06 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
2019/02/26 Javascript
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
Python 登录网站详解及实例
2017/04/11 Python
解决已经安装requests,却依然提示No module named requests问题
2018/05/18 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
django数据关系一对多、多对多模型、自关联的建立
2019/07/24 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
什么是python的id函数
2020/06/11 Python
python如何获得list或numpy数组中最大元素对应的索引
2020/11/16 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
英国婴儿及儿童产品商店:TigerParrot
2019/03/04 全球购物
法国二手MacBook销售网站:Okamac
2019/03/18 全球购物
SQL Server数据库笔试题和答案
2016/02/04 面试题
车祸赔偿收入证明
2014/01/09 职场文书
十一酒店活动方案
2014/02/20 职场文书
教师廉洁自律承诺书
2014/05/26 职场文书
2014年小学德育工作总结
2014/12/05 职场文书
导师鉴定意见
2015/06/05 职场文书
Python一行代码实现自动发邮件功能
2021/05/30 Python
Python学习之包与模块详解
2022/03/19 Python
JS实现数组去重的11种方法总结
2022/04/04 Javascript
css样式important规则的正确使用方式
2022/06/10 HTML / CSS