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你的验证码安全码?
Jan 02 PHP
在PHP中使用Sockets 从Usenet中获取文件
Jan 10 PHP
PHP 超链接 抓取实现代码
Jun 29 PHP
PHP学习笔记之一
Jan 17 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
Nov 07 PHP
PHP函数spl_autoload_register()用法和__autoload()介绍
Feb 04 PHP
php实现查询百度google收录情况(示例代码)
Aug 02 PHP
PHP中使用break跳出多重循环代码实例
Jan 21 PHP
header与缓冲区之间的深层次分析
Jul 30 PHP
php自定义函数实现二维数组按指定key排序的方法
Sep 29 PHP
php获取微信共享收货地址的方法
Dec 21 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
Jun 16 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简介
2006/10/09 PHP
PHP类的静态(static)方法和静态(static)变量使用介绍
2012/02/19 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
php新建文件的方法实例
2019/09/26 PHP
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
JavaScript读二进制文件并用ajax传输二进制流的方法
2016/07/18 Javascript
几句话带你理解JS中的this、闭包、原型链
2016/09/26 Javascript
JavaScript递归操作实例浅析
2016/10/31 Javascript
js实时监控文本框输入字数的实例代码
2018/01/18 Javascript
详解swiper在vue中的应用(以3.0为例)
2018/09/20 Javascript
Electron中实现大文件上传和断点续传功能
2018/10/28 Javascript
vue动画效果实现方法示例
2019/03/18 Javascript
详解vue中的父子传值双向绑定及数据更新问题
2019/06/13 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
2020/02/03 Javascript
python中文乱码的解决方法
2013/11/04 Python
Python中创建二维数组
2018/10/17 Python
Python实现常见的回文字符串算法
2018/11/14 Python
Python列表切片操作实例总结
2019/02/19 Python
详解python列表生成式和列表生成式器区别
2019/03/27 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
python使用for...else跳出双层嵌套循环的方法实例
2020/05/17 Python
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
我们是伦敦女孩:WalG
2018/01/08 全球购物
Under Armour安德玛德国官网:美国高端运动科技品牌
2019/03/09 全球购物
马来西亚排名第一的宠物用品店:Pets Wonderland
2020/04/16 全球购物
网络工程与软件技术毕业生自荐信
2013/09/24 职场文书
人事主管岗位职责
2014/01/30 职场文书
全国道德模范事迹
2014/02/01 职场文书
学校运动会霸气口号
2014/06/07 职场文书
2019个人工作态度自我评价
2019/04/24 职场文书
银行求职信范文
2019/05/13 职场文书