时间:2021-07-01 10:21:17 帮助过:4人阅读
- 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使用范围解析操作符的示例详解的详细内容,更多请关注Gxl网其它相关文章!