PHP 在命名空间中引用常量不起作用“未定义常量”

问题描述 投票:0回答:1

我搜索了很多其他类似的问题/解答,但似乎没有一个能解决这个具体情况:

有一个包含常量的文件:

App/Core/SomeConstants.php
其中包含:

namespace App\Core\SomeConstants;
const MY_CONST = 'myconstvalue';

然后有一个控制器使用这个常量,如下所示:

use const App\Core\SomeConstants\MY_CONST;
something("foo" . MY_CONST);

根据https://www.php.net/manual/en/language.namespaces.importing.php我认为这会起作用,但是当我运行该使用代码时(当然在重新加载自动加载器之后) /清除缓存),我得到

Undefined constant \"App\\Core\\SomeConstants\\MY_CONST\""

我什至尝试了像

something("foo" . \App\Core\SomeConstants\MY_CONST);
这样的完整命名空间引用,但仍然一无所获。

同样有趣的是,IDE vscode 没有问题,并且在这两种情况下实际上都显示了正确的提示和内容。

我做错了什么?甚至可以在不将常量包装到类中的情况下完成吗?此行为记录在哪里?谢谢

php symfony namespaces constants
1个回答
0
投票
require

指令。需要加载包含已定义常量的 PHP 文件。

// file1.php
namespace Ns1;
const MYCONST = "some value";

// file2.php    
namespace Ns2;
require "path/to/file/containing/myconst.php";
$val = Ns1\MYCONST;

© www.soinside.com 2019 - 2024. All rights reserved.