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 相关文章推荐
解决phpmyadmin 乱码,支持gb2312和utf-8
Nov 20 PHP
如何使用PHP中的字符串函数
Nov 24 PHP
一个图形显示IP的PHP程序代码
Oct 19 PHP
PHP防注入安全代码
Apr 09 PHP
php 获得汉字拼音首字母的函数
Aug 01 PHP
让你成为更出色的PHP开发者的10个技巧
Feb 25 PHP
PHP+iframe图片上传实现即时刷新效果
Nov 18 PHP
PHP 类与构造函数解析
Feb 06 PHP
YII2框架中使用yii.js实现的post请求
Apr 09 PHP
Yii Framework框架使用PHPExcel组件的方法示例
Jul 24 PHP
PHP配置文件php.ini中打开错误报告的设置方法
Jan 09 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 向访客和爬虫显示不同的内容
2009/11/09 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
2014/11/06 PHP
PHP生成随机密码方法汇总
2015/08/27 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
(function($){...})(jQuery)的意思
2010/07/22 Javascript
jQuery实现表头固定效果的实例代码
2013/05/24 Javascript
JavaScript DOM基础
2015/04/13 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
jQuery实现向下滑出的二级菜单效果实例
2015/08/22 Javascript
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
ajax级联菜单实现方法实例分析
2016/11/28 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
2016/12/25 Javascript
js实现字符全排列算法的简单方法
2017/05/01 Javascript
单页面vue引入百度统计的使用方法示例详解
2018/10/13 Javascript
Vue 使用formData方式向后台发送数据的实现
2019/04/14 Javascript
微信小程序 button样式设置为图片的方法
2020/06/19 Javascript
微信小程序实现倒计时功能
2020/11/19 Javascript
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
Python/Django后端使用PIL Image生成头像缩略图
2019/04/30 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
Django使用Jinja2模板引擎的示例代码
2019/08/09 Python
python可视化实现KNN算法
2019/10/16 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
五款漂亮的纯CSS3动画按钮的实例教程
2014/11/21 HTML / CSS
CSS3中的常用选择器使用示例整理
2016/06/13 HTML / CSS
Pureology官网:为染色头发打造最好的产品
2019/09/13 全球购物
什么是.net
2015/08/03 面试题
十佳大学生事迹材料
2014/01/29 职场文书
财务主管岗位职责
2014/02/28 职场文书
计划生育个人总结
2015/03/02 职场文书
2015年上半年党建工作总结
2015/03/30 职场文书
盗窃案辩护词
2015/05/21 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书
消防演习感想
2015/08/10 职场文书
《生物入侵者》教学反思
2016/02/16 职场文书
MySQL 逻辑备份 into outfile
2022/05/15 MySQL