gpt4 book ai didi

php - PHP 中的 self::vs className::inside static className 方法

转载 作者:IT王子 更新时间:2023-10-29 00:20:57 26 4
gpt4 key购买 nike

我想除了个人喜好之外可能没有任何区别,但是在阅读各种 PHP 代码时我遇到了两种访问方法类的方法。

有什么区别:

class Myclass
{
public static $foo;

public static function myMethod ()
{
// between:
self::$foo;
// and
MyClass::$foo;
}
}

最佳答案

(注:初版说没有区别,实际上有)

确实有一点不同。 self:: 转发静态调用,而 className:: 则不。这只对 late static bindings 重要在 PHP 5.3+ 中。

在静态调用中,PHP 5.3+ 会记住最初调用的类。使用 className:: 使 PHP“忘记”这个值(即将它重置为 className),而 self:: 保留它。考虑:

<?php
class A {
static function foo() {
echo get_called_class();
}
}
class B extends A {
static function bar() {
self::foo();
}
static function baz() {
B::foo();
}
}
class C extends B {}

C::bar(); //C
C::baz(); //B

关于php - PHP 中的 self::vs className::inside static className 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3481085/

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