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 相关文章推荐
如何跨站抓取别的站点的页面的补充
Oct 09 PHP
PHP实现图片简单上传
Oct 09 PHP
Yii中render和renderPartial的区别
Sep 03 PHP
php随机取mysql记录方法小结
Dec 27 PHP
十幅图告诉你什么是PHP引用
Feb 22 PHP
php实现随机显示图片方法汇总
May 21 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
May 12 PHP
PHPMAILER实现PHP发邮件功能
Apr 18 PHP
PHP常用字符串函数小结(推荐)
Aug 05 PHP
Laravel 微信小程序后端搭建步骤详解
Nov 26 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
Aug 24 PHP
phpstudy隐藏index.php的方法
Sep 21 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
天津市收音机工业发展史
2021/03/04 无线电
Zend Framework教程之配置文件application.ini解析
2016/03/10 PHP
php禁用函数设置及查看方法详解
2016/07/25 PHP
yii2局部关闭(开启)csrf的验证的实例代码
2017/07/10 PHP
JS中剪贴板兼容性、判断复制成功或失败
2021/03/09 Javascript
JTrackBar水平拖动效果
2007/07/15 Javascript
Confirmer JQuery确认对话框组件
2010/06/09 Javascript
Js控制弹窗实现在任意分辨率下居中显示
2013/08/01 Javascript
一个判断抢购时间是否到达的简单的js函数
2014/06/23 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
2016/09/20 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
JS高级运动实例分析
2016/12/20 Javascript
详解Angular2表单-模板驱动的表单(Template-Driven Forms)
2017/08/04 Javascript
Angularjs添加排序查询功能的实例代码
2017/10/24 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
vue中使用百度脑图kityminder-core二次开发的实现
2019/09/26 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
vue 需求 data中的数据之间的调用操作
2020/08/05 Javascript
Python pass 语句使用示例
2014/03/11 Python
Python实现命令行通讯录实例教程
2016/08/18 Python
Django admin实现图书管理系统菜鸟级教程完整实例
2017/12/12 Python
python实现反转部分单向链表
2018/09/27 Python
10个Python小技巧你值得拥有
2018/09/29 Python
使用Python的toolz库开始函数式编程的方法
2018/11/15 Python
在PyCharm导航区中打开多个Project的关闭方法
2019/01/17 Python
pytorch程序异常后删除占用的显存操作
2020/01/13 Python
使用python matplotlib 画图导入到word中如何保证分辨率
2020/04/16 Python
Lands’ End官网:经典的美国生活方式品牌
2016/08/14 全球购物
用C#语言写出与SQLSERVER访问时的具体过程
2013/04/16 面试题
房地产销售员的自我评价分享
2013/12/04 职场文书
2014国庆节国旗下演讲稿(精选版)
2014/09/26 职场文书
学生党员批评与自我批评
2014/10/15 职场文书
2014年文员工作总结
2014/11/18 职场文书
自我检讨报告
2015/01/28 职场文书
Android开发 使用文件储存的方式保存QQ密码
2022/04/24 Java/Android