PHP在命名空间中引用常量不起作用“Undefined constant”

v440hwme  于 5个月前  发布在  PHP
关注(0)|答案(1)|浏览(48)

我已经搜索了很多其他类似的Q/A,但似乎没有一个解决这个特定的情况:
有一个包含常量的文件: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没有问题,实际上在这两种情况下都显示了适当的提示和内容。
我做错了什么?它甚至可以**不 * Package 常量到一个类中吗?这种行为在哪里有文档记录?谢谢

t30tvxxf

t30tvxxf1#

正如@msg在评论中提到的,require指令丢失了。需要加载包含已定义常量的PHP文件。

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

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

字符串

相关问题