gpt4 book ai didi

php - 从PHP5中的抽象方法访问类常量

转载 作者:行者123 更新时间:2023-12-01 22:45:10 25 4
gpt4 key购买 nike

我正在尝试获取扩展类常量的值,但是是在抽象类的方法中。像这样:

    abstract class Foo {        public function method() {            echo self::constant;        }    }    class Bar extends Foo {        const constant = "I am a constant";    }    $bar = new Bar();    $bar->method();

然而,这会导致 fatal error 。有什么办法吗?

最佳答案

这可以使用 PHP 5.3 中引入的 Late Static Binding 关键字实现

本质上,self 指的是编写代码的当前类,而 static 指的是运行代码的类。

我们可以将您的代码片段重写为:

abstract class Foo {
public function method() {
echo static::constant; // Note the static keyword here
}
}

class Bar extends Foo {
const constant = "I am a constant";
}

$bar = new Bar();
$bar->method();

但是,这种编码模式是肮脏的,您可能应该改为在父类和子类之间引入一个 protected API 来来回传输此类信息。

所以从代码组织的角度来看,我会更倾向于 Morfildur 提出的解决方案。

关于php - 从PHP5中的抽象方法访问类常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2288770/

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