PHP 面向对象程序设计之类属性与类常量实现方法分析


Posted in PHP onApril 13, 2020

本文实例讲述了PHP 面向对象程序设计之类属性与类常量。分享给大家供大家参考,具体如下:

属性 (Properties)

类的变量成员叫做“属性”,或者叫“字段”、“特征”,在本文档统一称为“属性”。属性声明是由关键字 public,protected或者 private 开头,然后跟一个普通的变量声明来组成。属性中的变量可以初始化,但是初始化的值必须是常数,这里的常数是指 PHP 脚本在编译阶段时就可以得到其值,而不依赖于运行时的信息才能求值。

有关 public,protected 和 private 的更多详细信息,请查看访问控制(可见性)。

Note:

为了向后兼容 PHP 4,PHP 5 声明属性依然可以直接使用关键字 var 来替代(或者附加于)public,protected 或private。但是已不再需要 var 了。在 PHP 5.0 到 5.1.3,var 会被认为是废弃的,而且抛出 E_STRICT 警告,但是 5.1.3 之后就不再认为是废弃,也不会抛出警告。

如果直接使用 var 声明属性,而没有用 public,protected 或 private 之一,PHP 5 会将其视为 public。

在类的成员方法里面,可以用 ->(对象运算符):$this->property(其中 property 是该属性名)这种方式来访问非静态属性。静态属性则是用 ::(双冒号):self::$property 来访问。更多静态属性与非静态属性的区别参见 Static 关键字。

当一个方法在类定义内部被调用时,有一个可用的伪变量 $this。$this 是一个到主叫对象的引用(通常是该方法所从属的对象,但如果是从第二个对象静态调用时也可能是另一个对象)。

属性声明以及调用

<?php
class SimpleClass
{
  // 错误的属性声明
  public $var1 = 'hello ' . 'world';
  public $var2 = <<<EOD
hello world
EOD;
  public $var3 = 1+2;
  public $var4 = self::myStaticMethod();
  public $var5 = $myVar;

  // 正确的属性声明
  public $var6 = myConstant;
  public $var7 = array(true, false);

  //在 PHP 5.3.0 及之后,下面的声明也正确
  public $var8 = <<<'EOD'
hello world
EOD;
  // 属性调用
  public getvar1() {
    echo $this->var1;
  }
}

$simpleObject = new $SimpleClass();
// 对象调用属性
echo $simpleObject->var1;  // 输出 "hello world"

类常量 (Class Constants)

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

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

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

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

定义和使用一个类常量

<?php
class MyClass
{
  const constant = 'constant value';

  function showConstant() {
    echo self::constant . "\n";
  }
}

echo MyClass::constant . "\n";

$classname = "MyClass";
echo $classname::constant . "\n"; // 自 5.3.0 起

$class = new MyClass();
$class->showConstant();

echo $class::constant."\n"; // 自 PHP 5.3.0 起

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
用文本文件制作留言板提示(上)
Oct 09 PHP
FleaPHP的安全设置方法
Sep 15 PHP
一个php Mysql类 可以参考学习熟悉下
Jun 21 PHP
第七章 php自定义函数实现代码
Dec 30 PHP
PHP中的Memcache详解
Apr 05 PHP
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
Jun 12 PHP
浅析php设计模式之数据对象映射模式
Mar 03 PHP
PHP实现小偷程序实例
Oct 31 PHP
php die()与exit()的区别实例详解
Dec 03 PHP
Laravel框架生命周期与原理分析
Jun 12 PHP
简单实用的PHP文本缓存类实例
Mar 22 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
Aug 03 PHP
PHP 对象接口简单实现方法示例
Apr 13 #PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
Apr 13 #PHP
yii2.0框架多模型操作示例【添加/修改/删除】
Apr 13 #PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
Apr 13 #PHP
php回调函数处理数组操作示例
Apr 13 #PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
Apr 13 #PHP
laravel使用数据库测试注意事项
Apr 10 #PHP
You might like
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
Codeigniter实现多文件上传并创建多个缩略图
2014/06/12 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
2014/07/22 PHP
php访问数组最后一个元素的函数end()用法
2015/03/18 PHP
Yii2 queue的队列使用详解
2019/07/19 PHP
JS实现图片预加载无需等待
2012/12/21 Javascript
jQuery插件 selectToSelect使用方法
2013/10/02 Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
2013/12/06 Javascript
js实现简易垂直滚动条
2017/02/22 Javascript
原生js实现可拖拽效果
2017/02/28 Javascript
JavaScript中常见的八个陷阱总结
2017/06/28 Javascript
微信小程序学习之数据处理详解
2017/07/05 Javascript
JavaScript实现打印星型金字塔功能实例分析
2017/09/27 Javascript
35个最好用的Vue开源库(史上最全)
2019/01/03 Javascript
LayUi数据表格自定义赋值方式
2019/10/26 Javascript
python 多进程通信模块的简单实现
2014/02/20 Python
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
python中 chr unichr ord函数的实例详解
2017/08/06 Python
python3.6的venv模块使用详解
2018/08/01 Python
解决python 无法加载downsample模型的问题
2018/10/25 Python
pymongo中group by的操作方法教程
2019/03/22 Python
python获取微信企业号打卡数据并生成windows计划任务
2019/04/30 Python
Python类和实例的属性机制原理详解
2020/03/21 Python
澳大利亚在线家具店:Luxo Living
2019/03/24 全球购物
波兰在线杂货店:Polski Koszyk
2019/11/02 全球购物
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
实习教师自我鉴定
2013/09/27 职场文书
营销与策划专业求职信
2014/06/20 职场文书
人事经理岗位职责范本
2014/08/04 职场文书
社会实践的活动方案
2014/08/22 职场文书
校园广播稿100字
2014/10/06 职场文书
党的群众路线教育实践活动批评与自我批评范文
2014/10/16 职场文书
餐厅服务员管理制度
2015/08/05 职场文书
聘任书范文大全
2015/09/21 职场文书
pytorch交叉熵损失函数的weight参数的使用
2021/05/24 Python
Python中rapidjson参数校验实现
2021/07/25 Python