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 相关文章推荐
轻松修复Discuz!数据库
May 03 PHP
php PDO中文乱码解决办法
Jul 20 PHP
php操作SVN版本服务器类代码
Nov 27 PHP
PHP下使用CURL方式POST数据至API接口的代码
Feb 14 PHP
深入php list()函数的详解
Jun 05 PHP
php导出word格式数据的代码实例
Nov 25 PHP
php文件缓存类汇总
Nov 21 PHP
php单例模式示例分享
Feb 12 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
Aug 31 PHP
php similar_text()函数的定义和用法
May 12 PHP
PHP编程 SSO详细介绍及简单实例
Jan 13 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 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程序中的常见漏洞进行攻击(上)
2006/10/09 PHP
PHP调用Linux的命令行执行文件压缩命令
2013/01/27 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
2019/10/16 PHP
jQuery 1.2.x 升? 1.3.x 注意事项
2009/05/06 Javascript
javascript写的简单的计算器,内容很多,方法实用,推荐
2011/12/29 Javascript
ajax java 实现自动完成功能
2012/12/19 Javascript
JS实现定时页面弹出类似QQ新闻的提示框
2013/11/07 Javascript
NodeJS的url截取模块url-extract的使用实例
2013/11/18 NodeJs
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
用Jquery选择器计算table中的某一列某一行的合计
2014/08/13 Javascript
简介JavaScript中substring()方法的使用
2015/06/06 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
2015/07/27 Javascript
angularjs中ng-attr的用法详解
2016/12/31 Javascript
AngularJS 表单验证手机号的实例(非必填)
2017/11/12 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
layui select获取自定义属性方法
2018/08/15 Javascript
JavaScript显式数据类型转换详解
2019/03/18 Javascript
详解小程序云开发攻略(解决最棘手的问题)
2019/09/30 Javascript
Vue3.0中的monorepo管理模式的实现
2019/10/14 Javascript
python使用Image处理图片常用技巧分析
2015/06/01 Python
教你用Python脚本快速为iOS10生成图标和截屏
2016/09/22 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
基于Tensorflow:CPU性能分析
2020/02/10 Python
通用的Django注册功能模块实现方法
2021/02/05 Python
Python中使用Selenium环境安装的方法步骤
2021/02/22 Python
HTML5中外部浏览器唤起微信分享功能的代码
2020/09/15 HTML / CSS
weblogic面试题
2016/03/07 面试题
经典C++面试题一
2016/11/06 面试题
元旦晚会感言
2014/03/12 职场文书
社团活动总结报告
2014/06/27 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
限期整改通知书
2015/04/22 职场文书
创业计划书之淘宝网店
2019/10/08 职场文书
68行Python代码实现带难度升级的贪吃蛇
2022/01/18 Python
详解Python中__new__方法的作用
2022/03/31 Python