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 相关文章推荐
使用 MySQL Date/Time 类型
Mar 26 PHP
php 静态页面中显示动态内容
Aug 14 PHP
基于Discuz security.inc.php代码的深入分析
Jun 03 PHP
php广告加载类用法实例
Sep 23 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
Oct 15 PHP
php+mysqli事务控制实现银行转账实例
Jan 29 PHP
PHP使用Mysqli类库实现完美分页效果的方法
Apr 07 PHP
PHP函数引用返回的实例详解
Sep 11 PHP
PHP魔术方法以及关于独立实例与相连实例的全面讲解
Oct 18 PHP
PDO的安全处理与事物处理方法
Oct 31 PHP
php和C#的yield迭代器实现方法对比分析
Jul 17 PHP
Nginx+php配置文件及原理解析
Dec 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
BBS(php & mysql)完整版(七)
2006/10/09 PHP
PHP 采集程序 常用函数
2008/12/18 PHP
关于php内存不够用的快速解决方法
2013/10/26 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
php编程每天必学之表单验证
2016/03/01 PHP
php微信公众号开发之图片回复
2018/10/20 PHP
百度 popup.js 完美修正版非常的不错 脚本之家推荐
2009/04/17 Javascript
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
2010/03/09 Javascript
获取焦点时,利用js定时器设定时间执行动作
2010/04/02 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
2015/04/01 Javascript
JavaScript中获取纯正的undefined的方法
2016/03/06 Javascript
JS动态给对象添加属性和值的实现方法
2016/10/21 Javascript
详解vue与后端数据交互(ajax):vue-resource
2017/03/16 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
swiper 自动图片无限轮播实现代码
2018/05/21 Javascript
深入剖析Node.js cluster模块
2018/05/23 Javascript
vue 循环加载数据并获取第一条记录的方法
2018/09/26 Javascript
jQuery实现的上拉刷新功能组件示例
2020/05/01 jQuery
微信小程序实现简单文字跑马灯
2020/05/26 Javascript
在Vue中使用antv的示例代码
2020/06/29 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
2020/08/06 Javascript
在Python中使用HTMLParser解析HTML的教程
2015/04/29 Python
python+requests+unittest API接口测试实例(详解)
2017/06/10 Python
Python标准模块--ContextManager上下文管理器的具体用法
2017/11/27 Python
使用k8s部署Django项目的方法步骤
2019/01/14 Python
Python解析命令行读取参数之argparse模块
2019/07/26 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
2019/10/11 Python
python异常处理、自定义异常、断言原理与用法分析
2020/03/23 Python
非常震撼的纯CSS3人物行走动画
2016/02/24 HTML / CSS
css3实现背景动态渐变效果
2019/12/10 HTML / CSS
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
小学生环保倡议书
2014/05/15 职场文书
导师工作推荐信范文
2014/05/17 职场文书
初中学生操行评语
2014/12/26 职场文书
工作失误检讨书
2015/01/26 职场文书
2015暑假假期总结
2015/07/13 职场文书