首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP如何处理未定义的常量?

问PHP如何处理未定义的常量?
EN

Stack Overflow用户
提问于 2017-12-27 02:50:46
回答 1查看 1.8K关注 0票数 0

我使用的是PHP7.0.2

请考虑PHP手册中的以下案文:

为什么 $foobar 是错的? 始终在字符串文本数组索引周围使用引号。例如,$foo‘’bar‘是正确的,而$foobar则不正确。但是为什么呢?在旧脚本中遇到这种语法是很常见的:这是错误的,但它有效。原因是这段代码有一个未定义的常量(bar),而不是字符串('bar‘-注意引号)。它的工作原理是PHP自动将一个裸字符串(一个不对应于任何已知符号的未引号的字符串)转换为一个包含裸字符串的字符串。例如,如果没有定义的常量名为bar,那么PHP将在字符串'bar‘中替换并使用它。

从上面的文本中,我不清楚当PHP遇到与任何已知符号(即未定义的常量)不对应的bar()时,PHP实际对它做了什么?

PHP如何将裸字符串bar转换为包含裸字符串的字符串,即'bar'

PHP是否定义了一个名为bar的常量,并将字符串值'bar'分配给它?

就像bar = 'bar';

如果是,我可以在进一步的代码中使用常量bar吗?

因为在PHP中,只有变量和常量可以包含值/保持值,而不能像字符串那样包含/保存任何值。

EN

回答 1

Stack Overflow用户

发布于 2017-12-27 03:04:41

从上面的文本中,我不清楚当PHP遇到与任何已知符号(即未定义的常量)不对应的bar()时,PHP实际对它做了什么?

与此行为相关的警告确实说明了一切:

Warning: Use of undefined constant bar - assumed 'bar' (this will throw an Error in a future version of PHP)

裸露的单词被看作是字符串,而不是常量--它被处理得就像你写了'bar'一样。表达式defined('bar')仍然是假的,代码中的其他bar实例也会抛出警告,而依赖于此行为的代码将完全停止在未来版本的PHP中工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47985749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档