php中self和static的区别

PHP静态方法与绑定示例
本文通过一个简单的PHP示例介绍了如何使用静态方法以及self和static关键字的区别。self指向当前类,而static则根据调用上下文动态绑定到相应的类。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>网页标题</title>
<meta name="keywords" content="关键字列表" />
<meta name="description" content="网页描述" />
<link rel="stylesheet" type="text/css" href="" />
<style type="text/css"></style>
<script type="text/javascript"></script>
</head>
<body>
<?php
class A{
static $p1 = 1;
static function showInfo(){//可继承
//self代表当前类:指其代码所在的类(静态绑定)
echo "<br />" . self::$p1;
}
static function showInfo2(){//可继承
//static也代表“当前类”:调用本方法的类
//static这个词有时候跟self代表同一个类,
//也有时候代表不同的类:static代表的是调用者(动态绑定)
//通常认为,这种情形更符合现实的需要
//可见self完全可以被static代替使用。
echo "<br />" . static::$p1;
}
}
class B extends A{
static $p1 = 10;//进行了属性覆盖
}
A::showInfo();//毫无疑问:1
B::showInfo();//???结果是1
//因为self永远代表其所在代码的类
echo "<hr />";
A::showInfo2();//结果是1
B::showInfo2();//结果是10

?>
</body>
</html>

 

 

在网页输出的结果:

1
1



1
10  

转载于:https://www.cnblogs.com/huodaihao/p/7068098.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值