PHP中self和static的用法及两者差异是什么
Admin 2022-11-17 群英技术资讯 946 次浏览
今天这篇给大家分享的知识是“PHP中self和static的用法及两者差异是什么”,小编觉得挺不错的,对大家学习或是工作可能会有所帮助,对此分享发大家做个参考,希望这篇“PHP中self和static的用法及两者差异是什么”文章能帮助大家解决问题。首先阐明结论,在PHP中 self指向定义了当前被调用方法的类, static指向调用当前静态方法的类。
接下来通过一个例子来证明上面的结果
class A
{
public static $_a = 'Class A';
public static function echoProperty()
{
echo self::$_a . PHP_EOL;
}
}
class B extends A
{
public static $_a = 'Class B';
}
$obj = new B();
B::echoProperty();//输出 Class A
之所以会这样是因为使用self:: 或者__CLASS__对当前类的静态引用,取决于定义被调用方法所在的类,将上面Class A的方法echoProperty做一下修改变成:
class A
{
public static $_a = 'Class A';
public static function echoProperty()
{
echo static::$_a . PHP_EOL;
}
}
//再次调用B::echoProperty将输出 'CLASS B'
为了避免上面第一个例子中看到的子类重写父类的静态属性后,使用继承来的方法仍然访问父类的静态属性, PHP5.3增加了一个新的语法:后期静态绑定(Late static binding), 使用static关键字替代self关键字,使得static指向与get_called_class()返回的相同的类,即当前调用静态方法的类, 该关键字对于静态方法的访问同样有效。
下面的例子更好的说明了new self()和new static()之间的差异(后者使用了PHP的后期静态绑定指向调用方法的当前类)
class A
{
public static function get_self()
{
return new self();
}
public static function get_static()
{
return new static();
}
}
class B extends A {}
echo get_class(B::get_self()); // A
echo get_class(B::get_static()); // B
echo get_class(A::get_self()); // A
echo get_class(A::get_static()); // A
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
序列化是将对象状态转换为可保持或可传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。将对象的状态信息转换为可以存储或传输的窗体的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。通常,对象实例的所有字段都会被序列化,这意味着数据会被表示为实例的序列化数据。这
PHP 5 的使用者可以使用 MySQL extension,mysqli 和 PDO_MYSQL 。php 7移除了mysql extension,只剩下后面两种选择。
首先我们找到File并打开设置settings选项,找到editor->font栏目选项。修改size中的数字,即可更换代码编辑区域的字体大小。我们可以在代码示例区域进行预览。选择好合适的大小后,点击OK就可以了。
学习过数据结构的朋友对于二叉树应该都不陌生,而二分搜索树也叫做二叉查找树,那么如何使用PHP来实现二分搜索树呢?下面我们一起来看一看。
在前文中介绍的方法有些麻烦,因为必须要加载很多的文件。本文介绍的方法简单了很多,只需要加载两个文件即可。需要的可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008