如何/可以在常量请求后定义常量?

时间:2018-10-04 04:49:01

标签: php class static constants

好的,就这样。这是我目前正在使用的工具,它工作正常,但是我对这个想法很挂念...

class Estr {

    public static function __callStatic ( $name, $arguments ) {
        $class_vars = get_class_vars ( get_called_class ( ) );
        if ( is_array ( $class_vars ) && sizeof ( $class_vars ) > 0 ) {
            foreach ( $class_vars as $key => $value ) {
                if ( strtolower ( $key ) == strtolower ( $name ) ) {
                    return $key;
                }
            }
        }
    }
}



class Relationship extends Estr {

    public $alternate;

}

这可以让我打电话;

var_dump ( Relationship :: alternate ( ) ); // response "alternate"

一切都很好。但是,当我开始时,我想要以下结果;

var_dump ( Relationship :: alternate ); // response "alternate"

并且我希望我的人际关系类都可以;

class Relationship extends Estr {

    public $alternate;

}

class Relationship extends Estr {

    const alternate;

}

在Estr类处理返回的变量/常量名称作为值的情况下,具有干净的OOP布局。 (例如,不需要'constternate =“ alternate”;'和'constternate = null;'。)

我尝试了一些解决方案,最接近目标的尝试是尝试捕获调用未定义常量的错误,同时仍返回值。但是,我仍然无法实现所需的类层次结构。

感谢面条,享受拼图! XD

P.S。 还是更好,我如何静态调用不存在的类常量并处理该类中的错误? 例如;关系::替代 响应; “类关系中的错误”

是否有一种方法可以拦截对“定义的常量”的调用,即使它们本质上应该存在? (如果没有,请在这里回答; PHP => Call to non-existing class constants, way to handle?

0 个答案:

没有答案