如果我在课堂上定义某些东西,我该怎么在课堂上打电话?

Sar*_*nHB 0 php

我有类似的东西

 define("__ROOT_PATH__", "http://{$_SERVER['HTTP_HOST']}/admin");
Run Code Online (Sandbox Code Playgroud)

在课堂上.我如何从函数中调用它是否带有cologn?我尝试在谷歌上查找但没有.

谢谢

sou*_*rge 11

该函数define()适用于全局常量,因此您只需使用该字符串__ROOT_PATH__(我建议使用另一种命名方案.以PHP为其魔术常量保留以两个下划线开头的常量)

define('__ROOT_PATH__', 'Constant String');
echo __ROOT_PATH__;
Run Code Online (Sandbox Code Playgroud)

如果要声明类常量,请使用const关键字:

class Test {
    const ROOT_PATH = 'Constant string';
}
echo Test::ROOT_PATH;
Run Code Online (Sandbox Code Playgroud)

但是有一个问题:在解析脚本时会评估类常量,因此您不能在这些常量中使用其他变量(因此您的示例将不起作用).使用define()作品,因为它被视为任何其他函数,并且可以动态定义常量值.

编辑:

正如PCheese指出的那样,您可以使用关键字访问类常量self,而不是类中的类名:

class Test {
    const ROOT_PATH = 'Constant string';
    public function foo() {
        echo self::ROOT_PATH;
    }
}
# You must use the class' name outside its scope:
echo Test::ROOT_PATH;
Run Code Online (Sandbox Code Playgroud)