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
MySQL数据源表结构图示
Jun 05 PHP
php mysql 判断update之后是否更新了的方法
Jan 10 PHP
163的邮件用phpmailer发送(实例详解)
Jun 24 PHP
linux实现php定时执行cron任务详解
Dec 24 PHP
ThinkPHP之foreach标签使用概述
Jun 30 PHP
PHP与MYSQL中UTF8 中文排序示例代码
Oct 23 PHP
用php来限制每个ip每天浏览页面数量的实现思路
Feb 24 PHP
PHP实现获取文件后缀名的几种常用方法
Aug 08 PHP
PHP检测用户是否关闭浏览器的方法
Feb 14 PHP
php图片添加文字水印实现代码
Mar 15 PHP
详解PHP匿名函数与注意事项
Mar 29 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实现的生成静态HTML速度快类库
2007/03/31 PHP
php中取得文件的后缀名?
2012/02/20 PHP
PHP文件上传主要代码讲解
2013/09/30 PHP
php时间计算相关问题小结
2016/05/09 PHP
在php7中MongoDB实现模糊查询的方法详解
2017/05/03 PHP
发两个小东西,ASP/PHP 学习工具。 用JavaScript写的
2007/04/12 Javascript
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
在html页面上拖放移动标签
2010/01/08 Javascript
异步加载script的代码
2011/01/12 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
2013/08/13 Javascript
jQuery中.live()方法的用法深入解析
2013/12/30 Javascript
node.js中的fs.truncate方法使用说明
2014/12/15 Javascript
AngularJS表格详解及示例代码
2016/08/17 Javascript
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
2018/04/09 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
浅谈手写node可读流之流动模式
2018/06/01 Javascript
webstorm+vue初始化项目的方法
2018/10/18 Javascript
vue图片裁剪插件vue-cropper使用方法详解
2020/12/16 Vue.js
Python创建文件和追加文件内容实例
2014/10/21 Python
Python读写ini文件的方法
2015/05/28 Python
python链接Oracle数据库的方法
2015/06/28 Python
Python中random模块生成随机数详解
2016/03/10 Python
Python 探针的实现原理
2016/04/23 Python
Python使用matplotlib实现绘制自定义图形功能示例
2018/01/18 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
2019/02/01 Python
Python进阶之迭代器与迭代器切片教程
2020/01/29 Python
HTML+CSS3 模仿Windows7 桌面效果
2010/06/17 HTML / CSS
Hotels.com爱尔兰:全球酒店预订
2017/02/24 全球购物
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
《鱼游到了纸上》教学反思
2014/02/20 职场文书
抽奖活动主持词
2014/03/31 职场文书
房产协议书范本
2014/10/18 职场文书
大三学生英语考试作弊检讨书
2015/01/01 职场文书
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript
SpringBoot中使用Redis作为全局锁示例过程
2022/03/24 Java/Android
js前端面试常见浏览器缓存强缓存及协商缓存实例
2022/06/21 Javascript