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 array_slice函数的使用以及参数详解
Aug 30 PHP
php下几个常用的去空、分组、调试数组函数
Feb 22 PHP
php pack与unpack 摸板字符字符含义
Oct 29 PHP
php删除文件夹及其文件夹下所有文件的函数代码
Jan 23 PHP
PHP5中GD库生成图形验证码(有汉字)
Jul 28 PHP
php中simplexml_load_string使用实例分享
Feb 13 PHP
php获取文章上一页与下一页的方法
Dec 01 PHP
PHPExcel内存泄漏问题解决方法
Jan 23 PHP
PHP微信红包API接口
Dec 05 PHP
YII使用url组件美化管理的方法
Dec 28 PHP
PHP请求Socket接口测试实例
Aug 12 PHP
php解决安全问题的方法实例
Sep 19 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上传非标准格式的图片pjpeg失败的方法
2017/03/12 PHP
JTrackBar水平拖动效果
2007/07/15 Javascript
根据json字符串生成Html的一种方式
2013/01/09 Javascript
jquery实现固定顶部导航效果(仿蘑菇街)
2013/03/21 Javascript
js正文内容高亮效果的实现方法
2013/06/30 Javascript
Jquery遍历节点的方法小集
2014/01/22 Javascript
使用jquery解析XML的方法
2014/09/05 Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
2015/03/02 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
JS实现IE状态栏文字缩放效果代码
2015/10/24 Javascript
JavaScript修改作用域外变量的方法
2016/03/25 Javascript
Bootstrap 布局组件(全)
2016/07/18 Javascript
详解Bootstrap的iCheck插件checkbox和radio
2016/08/24 Javascript
javaScript嗅探执行神器-sniffer.js
2017/02/14 Javascript
jQuery自定义图片上传插件实例代码
2017/04/04 jQuery
JavaScript实现设置默认日期范围为最近40天的方法分析
2017/07/12 Javascript
AngularJS使用ui-route实现多层嵌套路由的示例
2018/01/10 Javascript
JavaScript插入排序算法原理与实现方法示例
2018/08/06 Javascript
如何获取vue单文件自身源码路径
2019/05/06 Javascript
Python中为什么要用self探讨
2015/04/14 Python
Python如何使用k-means方法将列表中相似的句子归类
2019/08/08 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
2019/08/19 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
2020/01/13 Python
python使用Word2Vec进行情感分析解析
2020/07/31 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
详解使用CSS3的@media来编写响应式的页面
2017/11/01 HTML / CSS
企业统计员岗位职责
2013/12/13 职场文书
中专生求职自荐信范文
2013/12/22 职场文书
开展党的群众路线教育实践活动方案
2014/02/05 职场文书
报纸媒体创意广告词
2014/03/17 职场文书
签约仪式主持词
2014/03/19 职场文书
大学生个人先进事迹材料范文
2014/05/03 职场文书
培训计划通知
2015/07/15 职场文书
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
2021/06/03 Python
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android