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 相关文章推荐
我的论坛源代码(四)
Oct 09 PHP
使用 MySQL 开始 PHP 会话
Dec 21 PHP
php实现的MySQL通用查询程序
Mar 11 PHP
php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
Nov 02 PHP
php一次性删除前台checkbox多选内容的方法
Sep 22 PHP
php判断GIF图片是否为动画的方法
Sep 04 PHP
PHP中的reflection反射机制测试例子
Aug 05 PHP
PHP 双链表(SplDoublyLinkedList)简介和使用实例
May 12 PHP
php无限分类使用concat如何实现
Nov 05 PHP
php实现smarty模板无限极分类的方法
Dec 07 PHP
PHP将身份证正反面两张照片合成一张图片的代码
Apr 08 PHP
Docker搭建自己的PHP开发环境
Feb 24 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+Mysql+jQuery实现动态展示信息
2011/10/08 PHP
php设计模式之命令模式的应用详解
2013/05/21 PHP
PHP使用SOAP调用.net的WebService数据
2013/11/12 PHP
php使用多个进程同时控制文件读写示例
2014/02/28 PHP
php导出生成word的方法
2015/12/25 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
2019/10/24 PHP
建立良好体验度的Web注册系统ajax
2007/07/09 Javascript
js 得到文件后缀(通过正则实现)
2013/07/08 Javascript
从js向Action传中文参数出现乱码问题的解决方法
2013/12/29 Javascript
JS文本获得焦点清除文本文字的示例代码
2014/01/13 Javascript
JavaScript实现的使用键盘控制人物走动实例
2014/08/27 Javascript
jquery实现侧边弹出的垂直导航
2014/12/09 Javascript
js实现精美的图片跟随鼠标效果实例
2015/05/16 Javascript
javascript实现省市区三级联动下拉框菜单
2015/11/17 Javascript
jQuery mobile转换url地址及获取url中目录部分的方法
2015/12/04 Javascript
jquery对所有input type=text的控件赋值实现方法
2016/12/02 Javascript
jquery表单提交带错误信息提示效果
2017/03/09 Javascript
jQuery插件FusionCharts绘制的2D条状图效果【附demo源码】
2017/05/13 jQuery
angularjs项目的页面跳转如何实现(5种方法)
2017/05/25 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
vue vuex vue-rouert后台项目——权限路由(适合初学)
2017/12/29 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
2018/08/05 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
javascript实现简易计算器功能
2020/09/23 Javascript
[04:42]2015国际邀请赛CDEC战队晋级之路
2015/08/13 DOTA
[09:37]2018DOTA2国际邀请赛寻真——不懈追梦的Team Serenity
2018/08/13 DOTA
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
python中urlparse模块介绍与使用示例
2017/11/19 Python
python实现聚类算法原理
2018/02/12 Python
Pycharm+Python+PyQt5使用详解
2019/09/25 Python
python实现人工蜂群算法
2020/09/18 Python
通过Python pyecharts输出保存图片代码实例
2020/11/25 Python
python编程的核心知识点总结
2021/02/08 Python
对象的序列化(serialization)类是面向流的,应如何将对象写入到随机存取文件中
2015/06/22 面试题
优秀学生评语大全
2014/04/25 职场文书
民事撤诉申请书范本
2015/05/18 职场文书