gpt4 book ai didi

php - static 关键字对常量有影响吗?

转载 作者:可可西里 更新时间:2023-10-31 22:45:51 25 4
gpt4 key购买 nike

class A{
const FOO = 1;
}

class B extends A{

const FOO = 5;

function foo(){
print self::FOO;
print static::FOO;
}
}

$b = new B;
$b->foo();

两种情况下都打印 5。

那么在常量上使用 static 与 self 没有区别吗?

最佳答案

Late Static Binding 的上下文中有区别。

考虑这段代码:

<?php

class A {
const FOO = 1;

function bar() {
print self::FOO;
print "\n";
print static::FOO;
}
}

class B extends A {
const FOO = 5;
}

$b = new B;
$b->bar(); // 1 5

如果您运行这段代码,输出将是:

1
5

当引用 self::FOO 时,打印 1 的值(即使 bar() 是在类 上调用的B,但是当使用static关键字时,后期静态绑定(bind)生效,它引用B中的FOO常量,而不是A 当使用 static 关键字时。

这与 PHP 5.3 及更高版本相关。

关于php - static 关键字对常量有影响吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11657474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com