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 相关文章推荐
转换中文日期的PHP程序
Oct 09 PHP
一个简易需要注册的留言版程序
Oct 09 PHP
详解:――如何将图片储存在数据库里
Dec 05 PHP
PHP 动态随机生成验证码类代码
Apr 09 PHP
php开启安全模式后禁用的函数集合
Jun 26 PHP
php自动给文章加关键词链接的函数代码
Nov 29 PHP
深入Memcache的Session数据的多服务器共享详解
Jun 13 PHP
php中jpgraph类库的使用介绍
Aug 08 PHP
php广告加载类用法实例
Sep 23 PHP
PHP 读取文本文件内容并分页显示
Jan 02 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
Apr 15 PHP
phpQuery采集网页实现代码实例
Apr 02 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
BBS(php &amp; mysql)完整版(三)
2006/10/09 PHP
中英文字符串翻转函数
2008/12/09 PHP
win平台安装配置Nginx+php+mysql 环境
2016/01/12 PHP
PHP实现json_decode不转义中文的方法
2017/05/20 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
2019/10/13 PHP
JavaScript基本对象
2007/01/11 Javascript
js中将多个语句写成一个语句的两种方法小结
2007/12/08 Javascript
海量经典的jQuery插件集合
2010/01/12 Javascript
jquery中实现标签切换效果的代码
2011/03/01 Javascript
IE 当eval遇上function的处理
2011/08/09 Javascript
jQuery点击tr实现checkbox选中的方法
2013/03/19 Javascript
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
2016/05/19 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
老生常谈Bootstrap媒体对象
2017/07/06 Javascript
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
2018/10/17 NodeJs
vue微信分享出来的链接点开是首页问题的解决方法
2018/11/28 Javascript
Element实现表格分页数据选择+全选所有完善批量操作
2019/06/07 Javascript
解决vue更新路由router-view复用组件内容不刷新的问题
2019/11/04 Javascript
JavaScript canvas仿代码流瀑布
2020/02/10 Javascript
[02:43]DOTA2英雄基础教程 圣堂刺客
2013/12/09 DOTA
基于python requests库中的代理实例讲解
2018/05/07 Python
详解python和matlab的优势与区别
2019/06/28 Python
django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
2020/05/12 Python
python中os.remove()用法及注意事项
2021/01/31 Python
HTML5实现可缩放时钟代码
2017/08/28 HTML / CSS
建筑专业自荐信
2013/10/18 职场文书
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
互联网电子商务专业毕业生求职信
2014/03/18 职场文书
中小学生学籍证明
2014/10/25 职场文书
杭白菊导游词
2015/02/10 职场文书
党支部工作总结2015
2015/04/01 职场文书
如何用python清洗文件中的数据
2021/06/18 Python
python获取对象信息的实例详解
2021/07/07 Python
mysql中varchar类型的日期进行比较、排序等操作的实现
2021/11/17 MySQL