php中关于self和static代表本类的区别详解
程序员文章站
2022-11-20 12:50:57
在php中self关键字能够代表当前类,一般用于调用当前类的静态方法或者静态属性。但是static除了能够定义静态这一属性之外,还有着与self类似的功能(代表当前类)。
但是两...
在php中self关键字能够代表当前类,一般用于调用当前类的静态方法或者静态属性。但是static除了能够定义静态这一属性之外,还有着与self类似的功能(代表当前类)。
但是两者之间还是有一定的区别的,我们通过代码验证:
<?php header("Content-Type:text/html;charset=utf-8"); Class A{ public static $p1=1; public $p2=2; public static function showInfo(){ echo "<br/>".self::$p1; } public static function showInfo2(){ echo "<br/>".static::$p1; } } Class B extends A{ static $p1=10;//此处覆盖继承过来的变量p1. public $p2=20; } A::showInfo(); echo "<br/>"; B::showInfo(); echo "<hr/>"; A::showInfo2(); echo "<br/>"; B::showInfo2();
通过结果我们可以看出:
当调用方法showInfo()时输出对象为self::$p1。此时,尽管B类是继承于A类,且在B类中调用继承的方法,其显示的永远是self关键字所在的那一类。因此可以说:self表示的当前类主要是当前代码所在的类。
当调用方法showInfo2()时输出对象为static::$p1。此时,输出的结果不相同。A类中输出自己调用的属性。B也输出的是自己调用的属性(继承A类中的方法后调用的$p2被覆盖掉的值)。因此:static代表的是调用当前方法所在的类。
因此,虽然self和static都可以表示当前类,但是其代表的意义有所差别。
推荐阅读
-
php中关于self和static代表本类的区别详解
-
PHP中new static() 和 new self() 的区别介绍
-
PHP中new static() 和 new self() 的区别介绍
-
PHP中new static() 和 new self() 的区别介绍_PHP
-
PHP 中 new static 和 new self 的区别
-
php中关于self和static代表本类的区别详解
-
关于PHP中static和self的区别 static类 static读音 staticlayout
-
关于PHP中static和self的区别 static类 static读音 staticlayout
-
PHP 中 new static 和 new self 的区别,staticself
-
PHP中new static() 和 new self() 的区别介绍