php 类中的常量、静态属性、非静态属性的区别


Posted in PHP onApril 09, 2017

一.类常量:在类中始终保持不变的值定义为常量

类的常量不能使用访问限制修饰符,他是 public 的,可继承,可以被子类重写,访问类的常量必须使用双冒号 :: ,可以使用类名或类的实例来访问,因为是常量,所以名称不能使用表示变量的符号 $.

可以把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用 $ 符号。

常量的值必须是一个定值,不能是变量,类属性,数学运算的结果或函数调用。

接口(interface)中也可以定义常量。更多示例见文档中的接口部分。

自 PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字(如 self,parent 或 static)。

语法 : const constant= '常量';

class Myclass{
 const constant = '常量';

 //类内部调用
 public function test(){
  echo self::constant.'<br>';
 } 
}
Myclass::test();
//类外部访问
echo Myclass::constant.'<br>'; //方法一

$obj = new Myclass();  //方法二
echo $obj::constant.'<br>';

二.静态属性 : 是一个变量,可以常量的语法访问,就是 :: ,可以没有实例化也能访问

语法 :public static $my_static = '类似常量';

class Myclass{
 public static $static_val = '静态属性';
 //类内部访问
 public function test(){
  return self::$static_val.'<br>';
 } 
}

//类外部访问
// echo Myclass::test();
echo Myclass::$static_val;  //方法一
$obj = new Myclass();    //方法二
echo $obj::$static_val;
echo $obj->test();

三.非静态属性 : 一个正常的变量,实例化后可以访问,用 -> 符号

语法: public $my_val = '正常变量'

class Myclass{
 public $normal_val = '非静态属性';

 //类内部访问
 public function test(){
  return $this->normal_val ;
 } 
}
//类外部访问
$obj = new Myclass(); 
echo $obj->normal_val;
echo $obj->test();

PHP获取类中常量,属性,及方法列表的方法

$r = new ReflectionClass($this); 
Zend_Debug::dump($r->getConstants(), "Constants"); 
Zend_Debug::dump($r->getProperties(), "Properties"); 
Zend_Debug::dump($r->getMethods(), "Methods");

以上就是php 类中的常量、静态属性、非静态属性的介绍,当然你也可以查看这篇文章(php类变量)希望大家以后多支持三水点靠木。

PHP 相关文章推荐
用PHP实现WEB动态网页静态
Oct 09 PHP
PHP array_push 数组函数
Dec 26 PHP
PHP自动选择 连接本地还是远程数据库
Dec 02 PHP
php下尝试使用GraphicsMagick的缩略图功能
Jan 01 PHP
用来解析.htpasswd文件的PHP类
Sep 05 PHP
CI框架源码阅读,系统常量文件constants.php的配置
Feb 28 PHP
PHP上传图片类显示缩略图功能
Jun 30 PHP
laravel 中如何使用ajax和vue总结
Aug 16 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
Nov 13 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
Oct 15 PHP
laravel 解决后端无法获取到前端Post过来的值问题
Oct 22 PHP
Laravel框架之解决前端显示图片问题
Oct 24 PHP
PHP对象相关知识总结
Apr 09 #PHP
YII2框架中使用yii.js实现的post请求
Apr 09 #PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
Apr 09 #PHP
CentOS系统中PHP安装扩展的方式汇总
Apr 09 #PHP
PHP将身份证正反面两张照片合成一张图片的代码
Apr 08 #PHP
ThinkPHP中调用PHPExcel的实现代码
Apr 08 #PHP
yii框架无限极分类的实现方法
Apr 08 #PHP
You might like
再次研究下cache_lite
2007/02/14 PHP
PHP学习笔记(一) 简单了解PHP
2014/08/04 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
2016/11/14 PHP
yii2多图上传组件的使用教程
2018/05/10 PHP
&amp;lt;script defer&amp;gt; defer 是什么意思
2009/05/10 Javascript
jquery 弹出登录窗口实现代码
2009/12/24 Javascript
nodejs教程之异步I/O
2014/11/21 NodeJs
基于jQuery实现文本框缩放以及上下移动功能
2014/11/24 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
VUEJS实战之构建基础并渲染出列表(1)
2016/06/13 Javascript
第一次接触神奇的Bootstrap基础排版
2016/07/26 Javascript
微信JSAPI支付操作需要注意的细节
2017/01/10 Javascript
原生js实现类似fullpage的单页/全屏滚动
2017/01/22 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
2017/08/07 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
2019/06/27 Javascript
浅析Vue 防抖与节流的使用
2019/11/14 Javascript
原生JS与CSS实现软件卸载对话框功能
2019/12/05 Javascript
vue学习笔记之给组件绑定原生事件操作示例
2020/02/27 Javascript
js实现网页随机验证码
2020/10/19 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
python进阶教程之文本文件的读取和写入
2014/08/29 Python
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
Python OpenCV读取png图像转成jpg图像存储的方法
2018/10/28 Python
flask框架路由常用定义方式总结
2019/07/23 Python
PyQt Qt Designer工具的布局管理详解
2019/08/07 Python
Django 拆分model和view的实现方法
2019/08/16 Python
Python with语句用法原理详解
2020/07/03 Python
Matplotlib animation模块实现动态图
2021/02/25 Python
优衣库英国官网:UNIQLO英国
2016/12/25 全球购物
涉外经济法专业毕业生推荐信
2013/11/24 职场文书
毕业晚会主持词
2014/03/24 职场文书
《第一朵杏花》教学反思
2014/04/16 职场文书
学校安全工作汇报材料
2014/08/16 职场文书
交通事故赔偿协议书
2014/10/16 职场文书
Vite + React从零开始搭建一个开源组件库
2022/06/25 Javascript