您好,欢迎访问一九零五行业门户网

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对象<br>"; } function destruct() { echo "销毁一个rectangle对象<br>"; } function getarea() { echo "rectangle面积是:".($this->width * $this->height."<br>"); } 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)对象<br>"; } } $rec = new rectangle(10, 5); $rec->getarea(); $square = new square(10); $square->getarea(); ?>
运行结果:
以上就是php使用范围解析操作符的示例详解的详细内容。
其它类似信息

推荐信息