php函数

PHP使用范围解析操作符的示例代码分享

作者:admin 2017-05-15 我要评论( )

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

面向对象编程中会使用到一些它自己的操作符,如->,这个符号用来在对象中访问它自己的成员。另外一个是范围解析操作符:两个冒号连在一起(::)。这个符号用于在类中(而不是对象中)访问成员。使用方式如下:
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使用范围解析操作符的示例代码分享的详细内容,更多请关注php中文网其它相关文章!

}

转载请注明出处。

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • PHP实现多个进程同时写入同一个文件的两种方案分享

    2017-05-15

  • 如何使用fscok实现异步调用PHP的代码案例

    2017-05-15

  • PHP开发环境在Macbook Pro下搭建的图文详解

    2017-05-15

  • 详细介绍织梦GBK/GB2312转utf-8编码操作步骤(全站修改方法)

    2017-05-15