PHP调用命名类时为何抛出“Use of undefined constant”错误?
解决PHP中"Use of undefined constant"错误(调用静态类方法问题)
嘿,我完全懂作为PHP新手碰到这种看似简单却卡壳的问题有多闹心!咱们来把你的问题拆解开,轻轻松松搞定它~
首先,你遇到的「Use of undefined constant」错误,根源在于这行代码:var_dump(Request);。在PHP里,如果你直接写一个没有引号包裹的标识符(比如这里的Request),它会默认把这个标识符当成常量来解析,但你根本没定义过叫Request的常量,所以就报错啦——它完全没意识到你指的是你刚刚定义的Request类。
而你的目标是调用uri()这个静态方法,那正确的写法应该是这样的:
class Request { public static function uri(){ return 'test'; } } // 调用静态方法的标准语法:类名::方法名() var_dump(Request::uri());
这样运行后,你就能得到预期的输出string(4) "test"了。
另外补充两个新手可能会用到的小知识点:
- 如果你只是想查看类名的信息,而不是调用方法,那可以用两种方式避免常量错误:
- 把类名用单引号/双引号包裹:
var_dump('Request'); - 用PHP 5.5+支持的
::class语法(更推荐,尤其是涉及命名空间的场景):var_dump(Request::class);
- 把类名用单引号/双引号包裹:
- 注意PHP的类名在Linux/Unix系统下是区分大小写的,Windows下不区分,养成大小写一致的习惯能避免很多奇怪的问题~
内容的提问来源于stack exchange,提问作者Magdi Gamal
相关产品推荐
相关产品推荐

