频道栏目
首页 > 程序开发 > Web开发 > php > 正文
php中关于self和static代表本类的区别详解
2018-03-10 11:15:59         来源:caliburrrr的博客  
收藏   我要投稿

在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都可以表示当前类,但是其代表的意义有所差别。

点击复制链接 与好友分享!回本站首页
相关TAG标签 代表 php self static
上一篇:php简单分页的代码教程
下一篇:centos7.2下编译安装php7.1.3步骤教程
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站