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+Html+缓存
Nov 25 PHP
PHP中__get()和__set()的用法实例详解
Jun 04 PHP
php格式化日期和时间格式化示例分享
Feb 24 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
Jul 14 PHP
php通过淘宝API查询IP地址归属等信息
Dec 25 PHP
PHP实现导出excel数据的类库用法示例
Oct 15 PHP
PHP实现 APP端微信支付功能
Jun 22 PHP
PHP赋值的内部是如何跑的详解
Jan 13 PHP
PHP中引用类型和值类型功能与用法示例
Feb 26 PHP
php文件后缀不强制为.php的实操方法
Sep 18 PHP
laravel validate 设置为中文的例子(验证提示为中文)
Sep 29 PHP
PHP http请求超时问题解决方案
Nov 13 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 curl实现抓取302跳转后页面的示例
2014/07/04 PHP
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
PHP的引用详解
2015/02/22 PHP
php查看网页源代码的方法
2015/03/13 PHP
php实现短信发送代码
2015/07/05 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
2016/07/25 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
js实现的日期操作类DateTime函数代码
2010/03/16 Javascript
JavaScript中去掉数组中的重复值的实现方法
2011/08/03 Javascript
JS 实现图片直接下载示例代码
2013/07/22 Javascript
JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
2015/12/20 Javascript
Jquery操作cookie记住用户名
2016/03/29 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
JS实现分页浏览横向图片(类轮播)实例代码
2017/11/06 Javascript
js提取中文拼音首字母的封装工具类
2018/03/12 Javascript
vue实现引入本地json的方法分析
2018/07/12 Javascript
Vue项目中最新用到的一些实用小技巧
2018/11/06 Javascript
node app 打包工具pkg的具体使用
2019/01/17 Javascript
JavaScript canvas实现跟随鼠标移动小球
2021/02/09 Javascript
Python 字典dict使用介绍
2014/11/30 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
2018/04/28 Python
Django视图、传参和forms验证操作
2020/07/15 Python
python openCV实现摄像头获取人脸图片
2020/08/20 Python
Python修改DBF文件指定列
2020/12/19 Python
input file上传文件样式支持html5的浏览器解决方案
2012/11/14 HTML / CSS
沪江旗下的海量优质课程平台:沪江网校
2017/11/07 全球购物
亚马逊加拿大网站:Amazon.ca
2020/01/06 全球购物
分公司经理岗位职责
2013/11/11 职场文书
个人担保书格式范文
2014/05/12 职场文书
中国梦团日活动总结
2014/07/07 职场文书
2014乡镇领导班子四风对照检查材料思想汇报
2014/10/05 职场文书
小学生读书笔记范文
2015/06/30 职场文书
中学教师教学工作总结
2015/08/13 职场文书
2019入党申请书范文3篇
2019/08/21 职场文书
php png失真的原因及解决办法
2021/11/17 PHP
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏