Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >PHP后期静态绑定

PHP后期静态绑定

作者头像
憧憬博客
发布于 2020-07-20 09:10:10
发布于 2020-07-20 09:10:10
99400
代码可运行
举报
文章被收录于专栏:憧憬博客分享憧憬博客分享
运行总次数:0
代码可运行
  • 在看到后期静态绑定这个词的时候,感觉挺官方的,不太好理解,这里为我权当做个笔记了

即在类的继承过程中,使用的类不再是继承的类.而是调用的类,通过static关键字来实现,"static"不在被解析定义为当前方法所在的类,而是在实际运行时计算得到的,即为运行时最初调用的类,虽然称为后期静态绑定 但是并不局限于静态方法的调用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class A
{
    public static function call()
    {
      echo "class A";
    } 

    public static function test()
    {
      self::call();
      static::call();
    }
}

class B extends A
{
    public static function call()
    {
      echo "class B";
    }
}

B::test();
// 输出 class A   class B

在上面的实例中,在调用test() 函数的时候,"self::"是直接调用的本类中的方法,而static是根据调用test()函数的类来决定"static::"的值,因此static的值只有在调用时才能确定下来.这里需要注意的是,static并不限于静态方法的调用,它同样适用于非静态方法,调用的方式如上一致,是在调用时动态确定的,下面给出例子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class A
{
    public function call()
    {
      echo "instance from A\n";
    } 

    public function test()
    {
      self::call();
      static::call();
    }
}

class B extends A
{
    public function call()
    {
      echo "instance from B";
    }
}

$b = new B();
$b->test();
// 输出 instance from A   instance from A

本文为作者原创,手码不易,允许转载,转载后请以链接形式说明文章出处。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
后期静态绑定在PHP中的使用
什么叫后期静态绑定呢?其实我们在之前的文章PHP中的static中已经说过这个东西了。今天我们还是再次深入的理解一下这个概念。
硬核项目经理
2020/03/26
7470
PHP延迟静态绑定的深入讲解
所谓延迟静态绑定,顾名思义,静态调用时::符号左侧的部分的的绑定是延迟,也就是说不再被解析为定义当前方法所在的类,而是在实际运行时计算的。本文主要介绍了关于PHP延迟静态绑定的相关内容,下面话不多说了,来一起看看详细的介绍吧。
用户8660814
2021/07/13
6410
理解PHP的延迟静态绑定
static::中的static其实是运行时所在类的别名,并不是定义类时所在的那个类名。这个东西可以实现在父类中,能够调用子类的方法和属性。
zlmai
2018/09/24
1.3K0
php面对对象之后期绑定
自 PHP 5.3.0 起,PHP 增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的类。
仙士可
2019/12/18
5220
PHP中的static
关于静态变量和方法的问题也是面试中经常会出现的问题,这种问题多看手册搞明白原委就能解决,只是确实关于静态变量的问题还是比较绕的,这里我们就结合手册用实际的代码来看!
硬核项目经理
2019/08/06
1K0
php中self与static的区别
通过一些示例,我们可以很容易看出self和static的区别。假定我们有class Car – 它有两个方法,model和getModel。注意,这里我们使用了关键字self。
跑马溜溜的球
2022/03/07
5930
Java中的静态绑定和动态绑定
一个Java程序的执行要经过编译和执行(解释)这两个步骤,同时Java又是面向对象的编程语言。当子类和父类存在同一个方法,子类重写了父类的方法,程序在运行时调用方法是调用父类的方法还是子类的重写方法呢,这应该是我们在初学Java时遇到的问题。这里首先我们将确定这种调用何种方法实现或者变量的操作叫做绑定。
技术小黑屋
2018/09/05
1.8K0
PHP 静态属性和静态方法
前面介绍的 PHP 类属性和方法都要在类实例化后才能调用(常量属性除外),除此之外,PHP 还提供了静态属性和静态方法,所谓「静态」指的是无需对类进行实例化,就可以直接调用这些属性和方法,这么生讲有点硬,我们举个例子一看就明白了。
学院君
2020/07/21
4.3K0
PHP 静态属性和静态方法
$this、self和static
$this 只有在类产生实例之后才会存在,我们只是设置一个属性,此时不存在 $this,下图会产生语法错误。
仇诺伊
2018/09/12
7520
$this、self和static
理解静态绑定与动态绑定
一个Java 程序要经过编写、编译、运行三个步骤,其中编写代码不在我们讨论的范围之内,那么我们的重点自然就放在了编译 和 运行这两个阶段,由于编译和运行阶段过程相当繁琐,下面就我的理解来进行解释:
cxuan
2019/06/03
1.8K0
PHP学习笔记——延迟静态绑定
以上aClass和bClass继承于base这个抽象类,但是在两个子类中同时实现了create()这个静态方法。遵从oop思想,这种重复代码应该放在base这个父类中实现。
botkenni
2022/01/10
6480
PHP关键字Self、Static和parent的区别
在使用PHP代码时,您可能经常会遇到parent::、static::和self::。但是当你第一次作为一个开发人员开始的时候,有时候你会很困惑,不知道它们是做什么的,以及它们之间的区别。
Tinywan
2024/06/18
1500
PHP关键字Self、Static和parent的区别
静态成员在PHP中是怎么继承的?
静态成员,也就是用static修饰的变量或者方法,如果搞不清楚它们实现的原理,就很容易会出现一些错误。这次我们来研究的是在继承中静态成员的调用情况。首先来看这样一段代码:
硬核项目经理
2020/02/17
1.5K0
PHP类与对象
将对象实例赋值给一个新变量时,新变量访问的是同一实例。要创建一个新实例必须使用克隆操作
码一
2022/06/03
1.6K0
PHP类与对象
php静态延迟方法,phpstatic延迟静态绑定_PHP教程
我不想在每个子类中添加create方法,如果把create方法放在超类U中,代码可能是
全栈程序员站长
2022/11/03
1.1K0
Java中的静态绑定与动态绑定
由上面我们可以得出结论,如果一个方法不可被继承或者继承后不可被覆盖,那么这个方法就采用的静态绑定。
俺也想起舞
2019/07/24
1.7K0
动态绑定和静态绑定
Java的动态/静态绑定是比较偏门的知识点之一,可能你不经常听到,但是关于他们的应用,有Java开发经验的朋友应该看一眼就明白。
PhoenixZheng
2018/08/07
1.8K0
java — 静态绑定和动态绑定
绑定:一个方法的调用与方法所在的类关联起来。java中的绑定分为静态绑定和动态绑定,又被称作前期绑定和后期绑定。 静态绑定:(final、static、private)在程序执行前已经被绑定,也就是说在编译过程中就已经知道这个方法是哪个类的方法,此时由编译器获取其他连接程序实现。 动态绑定:在运行根据具体对象的类型进行绑定。 1.静态绑定 private:不能被继承,则不能通过子类对象调用,而只能通过类本身的对象进行调用,所以可以说private方法和方法所属的类绑定;   final:fina
Mister24
2018/05/14
3.6K0
PHP 面向对象
面向对象三大特性:封装、继承、多态。 官方文档:http://php.net/manual/zh/language.oop5.php 要创建一个类的实例,必须使用 new 关键字。如果该类属于一个名字空间,则必须使用其完整名称。 你可以使用 ClassName::class 获取一个字符串,包含了类 ClassName 的完全限定名称。 $this self parent static 当一个方法在类定义内部被调用时,有一个可用的伪变量 $this。 使用 self:: 来访问静态方法和静态变量。 使用 s
康怀帅
2018/02/28
1.6K0
PHP5.2至5.6的新增功能详解
php5.3不但引进了匿名函数还有更多更好多新的特性了,下面我们一起来了解一下PHP匿名函数与注意事项,具体内容如下
用户7657330
2020/08/14
3.8K0
相关推荐
后期静态绑定在PHP中的使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验