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 spl_autoload_register实现自动加载研究
Dec 06 PHP
php实现图片添加水印功能
Feb 13 PHP
PHP图片处理之图片背景、画布操作
Nov 19 PHP
php绘图之在图片上写中文和英文的方法
Jan 24 PHP
php抓取网站图片并保存的实现方法
Oct 29 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
Apr 15 PHP
PHP加密解密类实例代码
Jul 20 PHP
Yii2创建多界面主题(Theme)的方法
Oct 08 PHP
PHP获取当前日期及本周一是几月几号的方法
Mar 28 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
Oct 17 PHP
PHP+MySQL实现模糊查询员工信息功能示例
Jun 01 PHP
PHP7 foreach() 函数修改
Mar 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中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
php的POSIX 函数以及进程测试的深入分析
2013/06/03 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
JS去除数组重复值的五种不同方法
2013/09/06 Javascript
jQuery ajax调用WCF服务实例
2014/07/16 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
2015/10/23 Javascript
jQuery实现伪分页的方法分享
2016/02/17 Javascript
输入框点击时边框变色效果的实现方法
2016/12/26 Javascript
详解Vue双向数据绑定原理解析
2017/09/11 Javascript
深入理解Vue.js源码之事件机制
2017/09/27 Javascript
解决vue 更改计算属性后select选中值不更改的问题
2018/03/02 Javascript
Angular 容器部署的方法
2018/04/17 Javascript
layui radio性别单选框赋值方法
2018/08/15 Javascript
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
使用js获取身份证年龄的示例代码
2020/12/11 Javascript
python基础教程之简单入门说明(变量和控制语言使用方法)
2014/03/25 Python
Python实现模拟登录网易邮箱的方法示例
2018/07/05 Python
Python神奇的内置函数locals的实例讲解
2019/02/22 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
Django重设Admin密码过程解析
2020/02/10 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
2020/05/28 Python
详解pycharm配置python解释器的问题
2020/10/15 Python
HTML5在IE10、火狐下中文乱码问题的解决方法
2013/11/18 HTML / CSS
美国知名的旅游网站:OneTravel
2018/10/09 全球购物
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
C++是不是类型安全的
2014/02/18 面试题
优秀乡村医生事迹材料
2014/05/28 职场文书
企业读书活动总结
2014/06/30 职场文书
化学专业大学生职业生涯规划范文
2014/09/13 职场文书
闭幕词的写作格式与范文!
2019/06/24 职场文书
Python 数据可视化工具 Pyecharts 安装及应用
2022/04/20 Python
详解Mysql数据库平滑扩容解决高并发和大数据量问题
2022/05/25 MySQL