当前位置: 首页 > 编程日记 > 正文

php后期静态绑定

从php5.3开始,php增加了一个叫后期绑定的功能,用于在继承范围内引用静态调用的类

该功能从语言内部角度考虑北命名为“后期静态绑定”;“后期绑定”意思说:static::不再被解析为定义当前方法所在的类,而是在实际运行时计算的,也可以成为“静态绑定”;因为他可以用于(但不限于静态方法的调用)。

self::的限制

使用self::或者_class_对当前类的静态引用,取决于定义当前方法所在的类

例子:

class A {public static function who() {echo __CLASS__;}public static function test() {self::who();}
}class B extends A {public static function who() {echo __CLASS__;}
}B::test(); //A

打印结果:A

后期静态绑定的用法

后期静态绑定试图通过引入一个关键字表示运行时最初调用的类来绕过限制。简单的说,这个关键字能够让你在上述中调用test()时引用的类是B而不是A。最终决定不引用新的关键字,而是使用已经预留static关键字

例子:

<?php
class A {public static function who() {echo __CLASS__;}public static function test() {static::who(); // 后期静态绑定从这里开始}
}class B extends A {public static function who() {echo __CLASS__;}
}B::test();
?>

打印结果是:B

后期静态绑定的处理方式解决了以往完全没有解决的静态调用,另外一方面,如果静态调用使用parent::或者self::将转发调用信息

<?php
class A {public static function foo() {static::who();}public static function who() {echo __CLASS__."\n";}
}class B extends A {public static function test() {A::foo();parent::foo();self::foo();}public static function who() {echo __CLASS__."\n";}
}
class C extends B {public static function who() {echo __CLASS__."\n";}
}C::test();
?> 

打印结果:

A C C

例子:

<?php
class a {static public function test() {print get_called_class();}
}class b extends a {
}a::test(); 
b::test(); ?> 

打印结果:
a

b

特别声明:

get_called_class();获得类的名称静态方法中调用

转载于:https://www.cnblogs.com/hylaz/archive/2012/11/16/2772632.html

相关文章:

pytest 9 pytest-datadir读取文件信息

安装&#xff1a;pip install pytest-datadir 介绍&#xff1a;用于操作测试数据目录和文件的插件。pytest-datadir他会寻找包含测试模块名字的文件夹或者全局的一个文件夹名字为data下的数据。比如以下的一个结构&#xff1a; firstdemo.py可以从test_firstdemo文件夹下的文件…

深入理解ceph-disk activate 源码逻辑

文章目录CEPH-DISK代码逻辑Activate osd的主要逻辑如下DEF main_activate激活osd的入口函数DEF mount_activate挂载临时目录&#xff0c;分配osd id并初始化osdDEF activate 分配osd_id以及初始化osdCEPH-DISK代码逻辑 本文在上文 :深入理解ceph-disk prepare 源码逻辑基础上描…

simple_html_dom meta,HTML DOM Meta content 属性

HTML DOM Meta content 属性Meta 对象定义和用法content 属性可设置或者返回 meta 元素 content 属性值。content 属性指定了 meta 信息的内容。注意&#xff1a; 这个属性可用的值依赖于name 和httpEquiv 属性的值。语法设置 content 属性&#xff1a;linkObject.content"…

struts2登录后返回登录前的页面

在Action中添加 String getUrl&#xff08;&#xff09; &#xff5b; return ServletActionContext.getRequest().getHeader("referer"); &#xff5d; 然后配置struts的这个Action的result为&#xff1a;<result type"redirect">${url}</resu…

Exchange 2010 恢复误删除的邮箱账户及其邮箱

在误删除邮箱后&#xff0c;AD中相应的账号也会随之删除&#xff0c;此时该如何恢复&#xff1f; 先来模拟邮箱被误删除&#xff0c;在EMC控制台中删除别名为jqq的邮箱 打开ADUC&#xff0c;发现相应的jqq账号也被删除了: 1.恢复AD账号 下载运行ADRecycle Bin&#xff0c;点击【…

Python 函数初识 (1)

一、今日主要内容 认识函数 函数:对功能或者动作的封装(定义) 语法: def 函数名字(形参) 函数体 函数的调用格式:函数名(实参) 函数的返回值 关键字:return 终止函数的运行 1、函数内部不写return,默认函数末尾返回…

python的popen函数

最近了解了一下python的popen函数的使用&#xff0c;主要是用来执行linux命令 函数使用 使用之前需要导入import os模块 使用方式: os.popen(cmd)返回值: 返回一个文件句柄 import os cmd"/sbin/partx /dev/sdb" result_listos.popen(cmd) print result_list执行…

计算机竞赛CCC可以直接学吗,CCC 计算机竞赛到底有多牛!

加拿大计算机竞赛是什么&#xff1f;难度情况&#xff1f;加拿大计算机竞赛是由加拿大滑铁卢大学主办的&#xff0c;每年举办一次&#xff0c;是一场面向中学生的计算机程序设计比赛&#xff0c;CCC竞赛的一个目的是为广大中学生朋友们提供一个机会来测试自己分析、设计以及编程…

PHP basename() 函数

定义和用法 basename() 函数返回路径中的文件名部分。 语法 basename(path,suffix) 参数描述path必需。规定要检查的路径。suffix可选。规定文件扩展名。如果文件有 suffix&#xff0c;则不会输出这个扩展名。转载于:https://www.cnblogs.com/wuyou/p/3387079.html

真实工作经验总结——案例解析企业选型操作步骤

这是一个融合了本人以前工作经验的案例&#xff0c;包含有多个企业的选型需求。选型的过程也参考了本人以前所经历的部分事实。展现的目的在于让PUBer看到一个相对真实的选型。企业介绍这是一家中型的电脑和周边设备生产企业&#xff0c;即一个典型的电子企业。企业有内贸和外贸…

Oracle Goldengate Windows平台Oracle-Oracle单向复制

实验目的 Goldengate最基本的从源端一对一的单向复制&#xff0c;注意其中Goldengate版本取决于Oracle的版本。单向复制一般适用于保持目标数据库的实时更新&#xff0c;且目标数据库用来检索&#xff0c;如报表或者分析使用。 Source DB 操作系统&#xff1a;Windows 10 64 Or…

C语言解析命令行函数:getopt系列

头文件&#xff1a;/usr/include/getopt.h 函数传入较长参数 函数getopt_long_only和getopt_long两者用法差不多&#xff0c;都可以用来解析命令行选项 函数出处 #include <getopt.h> //getopt_long()头文件位置 int getopt_long (int ___argc, char *const *___ar…

宁波大学计算机专业复试,2016年宁波大学信息科学与工程学院计算机专业考研复试题库. (1)...

2016年宁波大学信息科学与工程学院计算机专业考研复试题库(二)——————————————————————————————————————————一、选择题1&#xff0e;下列有关浮点数加减运算的叒述中&#xff0c;正确的是()。对阶操作丌会引起阶码上溢戒下溢右规和尾…

RedHat、CentOS设置静态IP、主机名、关闭防火墙(虚拟机VMware客户机)

设置静态IP、主机名 1. /etc/sysconfig/network [roothadoop ~]# vi /etc/sysconfig/network NETWORKINGyes HOSTNAMEhadoop #主机名 GATEWAY192.168.80.1 #网关 2. /etc/sysconfig/network-scripts/ifcfg-eth0 [roothadoop ~]# vi /etc/sysconfig/network-scripts/ifc…

关于box2d相关学习教程记录一下

Box2D 2.0.1版本 认识Box2D世界掉落的苹果——b2Body刚体创建圆形刚体创建静止不动的刚体在运行时创建刚体刚体的上衣——b2BodyDef.userDataBox2D能再简单点吗——LDEasyBox2D让刚体听我的——ApplyForce、ApplyImpulse、SetLinearVelocity创建多边形刚体创建圆角刚体给圆角刚…

韦东山网课https://edu.csdn.net/course/play/207/1117

接口讲解https://edu.csdn.net/course/play/207/1117转载于:https://www.cnblogs.com/chulin/p/9878555.html

使用dd查看磁盘前4个扇区的内容

想要获取磁盘前四个扇区的内容可以先将扇区内容从磁盘dd出来&#xff0c;使用如下命令 dd if/dev/sdb ofmbr.txt bs1 count2048 改命令将sdb磁盘的前2048个字节内容即4个扇区内容备份到文件mbr.txt里面。 其中bs为块大小1即为1个字节&#xff0c;count表示块个数&#xff0c;即…

在SharePoint 2010使用OWA查看自己邮箱的内容

在SharePoint 2010使用OWA 背景: 利用 Outlook Web Access Web 部件&#xff0c;可以在 SharePoint 网站中显示从 Microsoft Exchange Server 2003 至 2007 电子邮件帐户中的文件夹中选择的内容. 这些 Web 部件连接到您的组织的 Office Outlook Web Access 服务器&#xff0c;而…

北京大学深圳研究生院计算机学什么,2018年北京大学深圳研究生院408计算机学科专业基础综合之计算机操作系统考研核心题库...

一、选择题1&#xff0e; 下列选项中&#xff0c;降低进程优先权级的合理时机是( )。A. 进程的时间片用完B. 进程刚完成I/O操作&#xff0c;进入就绪列队C. 进程长期处于就绪列队D. 进程从就绪状态转为运行态【答案】A【解析】本题的解答关键在于找出哪个选项中的进程应当被赋予…

网络瓶颈、线程死锁、内存泄露溢出、栈堆、ajax

网络瓶颈&#xff1a;网络传输性能及稳定性的一些相关元素 线程死锁&#xff1a;多个线程因竞争资源造成的一种僵局 下面我们通过一些实例来说明死锁现象。 先看生活中的一个实例&#xff0c;2个人一起吃饭但是只有一双筷子&#xff0c;2人轮流吃&#xff08;同时拥有2只筷子才…

g-gdb调试core文件

文章目录core文件判读是否为core文件打开系统 core dump修改core文件的保存路径gdb调试core文件最近初步了解了一下core 文件&#xff0c;已经如何将gdb工具与core文件结合调试出现段错误的程序core文件 core是指操作系的程序统核心。当我们的程序在操作系统上运行异常崩溃时&…

信息整合的讨论案例

我所在的公司是广州的一个大型国有企业&#xff0c;目前所用的信息管理系统包括企业管理的方方面面&#xff0c;大约有7到8个互相独立的信息系统&#xff0c;这些系统都是在7、8年前就已经投入使用了&#xff0c;完全自主开发和维护&#xff0c;所用的工具是delphi&#xff0b;…

html中sprite标签,Three.js模型标签

Three.js模型标签在很多的实际的项目中&#xff0c;你可能需要给一个Three.js的模型添加标签&#xff0c;标签可以通过一个包含文字图形信息的HTML元素或者一个three.js的精灵模型来表示。层级模型复杂的项目&#xff0c;一个three.js场景往往包含包含多个模型对象&#xff0c;…

D3D11中的硬件反锯齿 SSAA/MSAA/EQAA/CSAA(3)

五 、EQAA/CSAA EQAA(enhanced quality AA)和CSAA(coverage sample AA)其实是同样的采样技术&#xff0c;EQAA是AMD的实现&#xff0c;CSAA是NV的实现&#xff0c;下面我以EQAA为例看看这两种AA的原理&#xff1a; 在MSAA中&#xff0c;每个采样都有一个sample color缓冲相对应…

[ python ] 类的组合

首先&#xff0c;使用面向对象是一个人狗大战的实例&#xff1a; class Person:def __init__(self, name, hp, aggr, sex):self.name nameself.hp hpself.aggr aggrself.sex sexdef hit(self, dog):dog.hp - self.aggrprint(\033[31;1m%s被打&#xff0c;掉了%s的血.\033[0…

ceph nautilus相对于minic的主要改动

改动信息 详情可以查看ceph官网nautilus Dashboard功能 增加的新功能 支持多用户使用SSO的用户验证模式支持审计模式新的登录页&#xff0c;可以展示更多的集群健康指标使用swagger api的rest api文档 增加的新的管理特性 对于OSD的管理&#xff08;将osd标记为down,out,修…

word2003计算机应用考试,2017职称计算机考试Word2003操作练习题

2017职称计算机考试Word2003操作练习题实验操作能力是计算机考试考查的一项基本能力&#xff0c;下面是小编给大家提供的职称计算机考试Word2003操作练习题&#xff0c;大家可以参考练习&#xff0c;更多习题练习请关注应届毕业生考试网。1. 将所选文本的字体设置为“华文彩云”…

虚拟化及云厂商聚焦

虚拟化及云厂商聚焦转载于:https://blog.51cto.com/itcn001/1069736

题解:无线通讯网

qwq 跑最小生成树 一共n个电话&#xff0c;所以相当于最小生成树里删去最大的n-1的边 所以答案即为最小生成树的第n大边 prim或者kruskal都行 这是prim 1 #include<iostream>2 #include<cstdio>3 #include<algorithm>4 #include<cmath>5 using namespa…

linux常用操作指令—— 查看磁盘、内存使用情况(df、du、free、top)

显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示。free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。当文件系统也确定删除了该文件后,这时候du与df就一致了。实例4:显示目前磁盘空间和使用情况 (最常用)top:“实时查看” ,按。退出 (实时动态显示)