PHP静态方法和静态属性及常量属性的区别与介绍


Posted in PHP onMarch 22, 2019

PHP中若使用static关键字来修饰属性、方法,称这些属性、方法为静态属性、静态方法。static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法”。

程序中为什么要使用静态方法和属性呢?它们有几个特性是比较有用的:不需要实例化类就可以访问静态方法和属性,在代码的任何地方都可以使用!

<?php
class Example{
 static public $num = 0;
 static public function staticFunc(){
 self::$num++;
 print self::$num;
 }
}
echo Example::$num;
echo Example::staticFunc();
?>

需要注意的是:

1.静态方法不能访问普通属性,只能访问静态属性

2.静态方法是以类为作用域的,所以不用实例化就可以使用::来连接静态属性和静态方法

3.静态方法中不能使用伪关键词

那么常量属性和静态属性有什么区别呢?

<?php
class Example{
  const NUM = 0;
  //...
}
?>

常量属性不以$开头 而是以大写字母命名,他与静态属性的区别是它不可以被重新复制,否则会解析错误。

常量属性

有些属性是不能改变的

在PHP 5可以在类中定义常量属性,和全局变量一样,类常量一旦设置后就不能改变。常量属性用const关键字来声明。常量不像常规属性那样以 $ 开头。按照惯例,只能用大写字母来命名常量,如下所示:

class shopProduct {
    constAVAILABLE = 0;
    //…
}

常量属性只包含基本数据类型的值。不能将一个对象指派给常量。像静态属性一样,只能通过类而不能通过类的实例访问常量属性。引用常量时不需要用 $ 作为前导符,如下所示:

echoshopProduct::AVAILABLE;

给已经声明过的常量赋值会引起解析错误。

当需要在类的所有实例中都能访问某个属性,并且属性值无需改变时,应该使用常量。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

PHP 相关文章推荐
PHP的面试题集
Nov 19 PHP
php中经典方法实现判断多维数组是否为空
Oct 23 PHP
PHP容易忘记的知识点分享
Apr 30 PHP
yii操作cookie实例简介
Jul 09 PHP
Linux下安装oracle客户端并配置php5.3
Oct 12 PHP
微信公众平台消息接口校验与消息接口响应实例
Dec 23 PHP
PHP中实现crontab代码分享
Mar 26 PHP
PHP检测用户是否关闭浏览器的方法
Feb 14 PHP
PHP设置images目录不充许http访问的方法
Nov 01 PHP
thinkPHP5框架设置404、403等http状态页面的方法
Jun 05 PHP
thinkphp5引入公共部分header、footer的方法详解
Sep 14 PHP
laravel中的一些简单实用功能
Nov 03 PHP
简单实用的PHP文本缓存类实例
Mar 22 #PHP
PHP设计模式之PHP迭代器模式讲解
Mar 22 #PHP
ThinkPHP5.1表单令牌Token失效问题的解决
Mar 22 #PHP
PHP iconv()函数字符编码转换的问题讲解
Mar 22 #PHP
PHP里的$_GET数组介绍
Mar 22 #PHP
PHP匿名函数(闭包函数)详解
Mar 22 #PHP
PHP利用递归函数实现无限级分类的方法
Mar 22 #PHP
You might like
在PHP中实现Javascript的escape()函数代码
2010/08/08 PHP
巧用php中的array_filter()函数去掉多维空值的代码分享
2012/09/07 PHP
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
2013/06/03 PHP
php中session使用示例
2014/03/29 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
2019/05/06 PHP
彻底搞懂JS无缝滚动代码
2007/01/03 Javascript
JS操作Cookie写入和读取实例代码
2013/10/20 Javascript
FF IE浏览器修改标签透明度的方法
2014/01/27 Javascript
js中的caller和callee属性介绍和例子
2014/06/07 Javascript
浅谈String.valueOf()方法的使用
2016/06/06 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
学习JavaScript图片预加载模块
2016/11/07 Javascript
用jquery的attr方法实现图片切换效果
2017/02/05 Javascript
JavaScript实现图片本地预览功能【不用上传至服务器】
2017/09/20 Javascript
微信小程序websocket实现聊天功能
2020/03/30 Javascript
详解vue项目中调用百度地图API使用方法
2019/04/25 Javascript
微信小程序实现的picker多级联动功能示例
2019/05/23 Javascript
vue实现登录页面的验证码以及验证过程解析(面向新手)
2019/08/02 Javascript
用实例解释Python中的继承和多态的概念
2015/04/27 Python
Python中处理字符串之endswith()方法的使用简介
2015/05/18 Python
解决python删除文件的权限错误问题
2018/04/24 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
Python英文文本分词(无空格)模块wordninja的使用实例
2019/02/20 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
树莓派+摄像头实现对移动物体的检测
2019/06/22 Python
python opencv minAreaRect 生成最小外接矩形的方法
2019/07/01 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
python爬虫智能翻页批量下载文件的实例详解
2021/02/02 Python
关于HTML5语义标签的实践(blog页面)
2016/07/12 HTML / CSS
汇科协同Java笔试题
2012/03/31 面试题
应届生服务员求职信
2013/10/31 职场文书
中职生自荐信范文
2014/06/15 职场文书
保研导师推荐信
2015/03/25 职场文书
担保书格式范文
2015/09/22 职场文书
vue使用watch监听属性变化
2022/04/30 Vue.js