gpt4 book ai didi

php - parent 是否可以从静态方法内部使用 child 的常量或静态变量?

转载 作者:可可西里 更新时间:2023-10-31 23:35:10 24 4
gpt4 key购买 nike

下面是我正在尝试做的一个例子。 parent 无法访问 child 的任何变量。不管我使用什么技术(静态或常量),我只需要像这样的某种功能。

class ParentClass
{
public static function staticFunc()
{
//both of these will throw a (static|const) not defined error
echo self::$myStatic;
echo self::MY_CONSTANT;
}
}

class ChildClass extends ParentClass
{
const MY_CONSTANT = 1;
public static $myStatic = 2;
}

ChildClass::staticFunc();

我知道这很糟糕,但我不使用 5.3。任何涉及 eval 的 hacky 解决方案都非常受欢迎。

最佳答案

编辑:< 5.3 要求是在响应写完后添加的。在这种情况下,存在一个 hacky 解决方案 debug_backtrace .玩得开心。

而且,只是为了确定......我想 echo ParentClass::$myStatic; 是不可能的。同样,我很难为此找到一个用例。找到这样一个只能使用另一个类调用的静态方法肯定是深奥的。这是一种 SCSS 抽象方法。

原创:

是的,用late static bindings :

<?php
class ParentClass
{
public static function staticFunc()
{
echo static::$myStatic;
echo static::MY_CONSTANT;
}
}

class ChildClass extends ParentClass
{
const MY_CONSTANT = 1;
public static $myStatic = 2;
}

ChildClass::staticFunc(); //21
/* the next statement gives fatal error: Access to undeclared static
* property: ParentClass::$myStatic */
ParentClass::staticFunc();

不过我会说这不是一个很棒的设计。如果 ParentClass 也定义静态属性和常量会更有意义。

此功能是在 PHP 5.3 中引入的。

关于php - parent 是否可以从静态方法内部使用 child 的常量或静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2990062/

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