在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代表的是调用当前方法所在的类。
立即学习“PHP免费学习笔记(深入)”;
简介PHP轻论坛是一个简单易用的PHP论坛程序,适合小型社区和个人网站使用。v3.0版本是完全重构的版本,解决了之前版本中的所有已知问题,特别是MySQL保留字冲突问题。主要特点• 简单易用:简洁的界面,易于安装和使用• 响应式设计:适配各种设备,包括手机和平板• 安全可靠:避免使用MySQL保留字,防止SQL注入• 功能完善:支持分类、主题、回复、用户管理等基本功能• 易于扩展:模块化设计,便于
26
因此,虽然self和static都可以表示当前类,但是其代表的意义有所差别。
相关推荐:
以上就是php中self和static的区别详解的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号