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中使用crypt()实现用户身份验证的代码
Sep 05 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
Nov 19 PHP
thinkphp3.2.2前后台公用类架构问题分析
Nov 25 PHP
php读取文件内容的方法汇总
Jan 24 PHP
Linux平台PHP5.4设置FPM线程数量的方法
Nov 09 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
Dec 15 PHP
php数组指针操作详解
Feb 14 PHP
yii2项目实战之restful api授权验证详解
May 20 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
May 02 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
Nov 30 PHP
PHP与SQL语句写一句话木马总结
Oct 11 PHP
Laravel框架集合用法实例浅析
May 14 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
让这部DC动画新作刷新你的认知
2020/03/03 欧美动漫
PHP similar_text 字符串的相似性比较函数
2010/05/26 PHP
javascript之通用简单的table选项卡实现(二)
2010/05/09 Javascript
基于jQuery实现图片的前进与后退功能
2013/04/24 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
使用jQuery管理选择结果
2015/01/20 Javascript
DOM 事件流详解
2015/01/20 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
2016/11/09 Javascript
微信小程序 picker-view 组件详解及简单实例
2017/01/10 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
JavaScript条件判断_动力节点Java学院整理
2017/06/26 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
小程序登录/注册页面设计的实现代码
2019/05/24 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
2019/08/16 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
pycharm 使用心得(四)显示行号
2014/06/05 Python
用Python制作简单的钢琴程序的教程
2015/04/01 Python
Python实现DDos攻击实例详解
2019/02/02 Python
Python3.5内置模块之random模块用法实例分析
2019/04/26 Python
Django实现列表页商品数据返回教程
2020/04/03 Python
几款好用的python工具库(小结)
2020/10/20 Python
利用HTML5 Canvas制作一个简单的打飞机游戏
2015/05/11 HTML / CSS
农救科工作职责
2013/11/27 职场文书
婚礼证婚人证婚词
2014/01/08 职场文书
应届生简历中的自我评价
2014/01/13 职场文书
社区七一党员活动方案
2014/01/25 职场文书
护理专科自荐书范文
2014/02/18 职场文书
会计演讲稿范文
2014/05/23 职场文书
中国梦团日活动总结
2014/07/07 职场文书
商务英语专业大学生职业生涯规划书
2014/09/14 职场文书
新党员入党决心书
2015/09/22 职场文书
MYSQL优化之数据表碎片整理详解
2022/04/03 MySQL
MySql中的json_extract函数处理json字段详情
2022/06/05 MySQL