PHP的使用范围,php使用范围解析操作符的示例详解

面向对象编程中会使用到一些它自己的操作符,如->,这个符号用来在对象中访问它自己的成员。另外一个是范围解析操作符:两个冒号连在一起(::)。这个符号用于在类中(而不是对象中)访问成员。使用方式如下:ClassName::methodName();

ClassName::propertyName;

这种结构在两个地方可能被用到:

1.在使用类的时候,父类和子类具有相同的属性和方法时,利用它可以避免混淆。

2.在类外的时候,没有创建对象的情况下使用该操作符访问类的成员。

正如我们可以在一个类中使用$this来引用当前对象的实例,关键字self被用作当前类的一个引用。class SomeClass {

function construct() {

self::do();

}

protected function do(){

echo "done!";

}

}

在这段代码中,self::do()会触发当前类的do()方法。

要引用父类的一个成员,可以使用关键字parent和范围解析操作符来引用:class SomeOtherClass extends SomeClass {

function construct() {

parent::do();

}

}

在多数情况下,我们使用范围解析操作符是为了访问被重写的方法。我们也可以用其访问静态和常数成员。

注:类常数和静态属性一样,它可以被类(或其子类)的全部实例访问。但是它的值不可改变。创建类常数是使用const关键字,后面紧跟着常数名(没有美元符号)。常数不可通过对象访问,比如$obj->PI或者$obj::PI都是不行的,但是我们可以在任何地方使用ClassName::CONSTANT_NAME。也可以在类中的方法使用self::CONSTANT_NAME。

示例程序:<?php

class Rectangle {

protected static $_count = 0;

protected $width;

protected $height;

function construct($width, $height) {

$this->width = $width;

$this->height = $height;

self::$_count++;

echo "已成功创建".self::$_count."个Rectangle对象
";

}

function destruct() {

echo "销毁一个Rectangle对象
";

}

function getArea() {

echo "Rectangle面积是:".($this->width * $this->height."
");

}

function getConunt() {

return self::$_count;

}

}

class Square extends Rectangle {

function construct($side) {

$this->width = $side;

$this->height = $side;

parent::$_count++;

echo "已成功创建".parent::$_count."个Rectangle(Square)对象
";

}

}

$rec = new Rectangle(10, 5);

$rec->getArea();

$square = new Square(10);

$square->getArea();

?>

运行结果:

969a6a70a7e9e47bc3519eef9b7429ae-0.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值