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加密解密的代码
Jul 16 PHP
Windows IIS PHP 5.2 安装与配置方法
Jun 08 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
Oct 12 PHP
PHP 遍历文件实现代码
May 04 PHP
php中print(),print_r(),echo()的区别详解
Dec 01 PHP
php include类文件超时问题处理
Feb 06 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
Jan 14 PHP
浅析Yii2 GridView实现下拉搜索教程
Apr 22 PHP
php实现给二维数组中所有一维数组添加值的方法
Feb 04 PHP
php实现的mongoDB单例模式操作类
Jan 20 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
Dec 08 PHP
php多进程应用场景实例详解
Jul 22 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
phpMyAdmin 链接表的附加功能尚未激活的问题
2010/08/01 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
Zend Framework分发器用法示例
2016/12/11 PHP
javascript中的undefined 与 null 的区别  补充篇
2010/03/17 Javascript
扩展Jquery插件处理mouseover时内部有子元素时发生样式闪烁
2011/12/08 Javascript
Mac/Windows下如何安装Node.js
2013/11/22 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
JavaScript操作Oracle数据库示例
2015/03/06 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
2016/01/26 Javascript
概述BootStrap中role=&quot;form&quot;及role作用角色
2016/12/08 Javascript
Express URL跳转(重定向)的实现方法
2017/04/07 Javascript
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
2018/07/26 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
2018/12/03 Javascript
微信小程序实现多个按钮的颜色状态转换
2019/02/15 Javascript
jQuery实现轮播图源码
2019/10/23 jQuery
Vue 路由间跳转和新开窗口的方式(query、params)
2019/12/25 Javascript
[01:01:51]EG vs VG Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
[48:48]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
2020/02/25 Python
Keras load_model 导入错误的解决方式
2020/06/09 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
CSS3中的注音对齐属性ruby-align用法指南
2016/07/01 HTML / CSS
CSS Grid布局教程之浏览器开启CSS Grid Layout汇总
2014/12/30 HTML / CSS
印尼最大的在线购物网站:MatahariMall.com
2016/08/26 全球购物
澳洲网红粉泥面膜:Sand & Sky
2019/08/13 全球购物
医院护士党的群众路线教育实践活动对照检查材料思想汇报
2014/10/04 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
裁员通知
2015/04/25 职场文书
目标责任书格式范文
2015/05/11 职场文书
请客吃饭开场白
2015/06/01 职场文书
运动会入场词
2015/07/18 职场文书
公司借款担保书
2015/09/22 职场文书
利用javaScript处理常用事件详解
2021/04/14 Javascript
python 镜像环境搭建总结
2022/09/23 Python