【问题标题】:How to use PHP constants correctly post PHP 7.2? [duplicate]如何在 PHP 7.2 之后正确使用 PHP 常量? [复制]
【发布时间】:2021-05-15 07:03:16
【问题描述】:

我正在使用 PHP 中的一些可用常量以特定格式显示日期和时间:

$created_date=date(Y.'-'.m.'-'.d.'\T'.H.':'.i.':'.s.'\Z',$created_timestamp);

自从从 PHP 7.1 更新到 7.4 后,我在日志文件中收到以下消息:

PHP 警告:使用未定义的常量 Y - 假定为“Y”(这将在 PHP 的未来版本中引发错误)

PHP 警告:使用未定义的常量 m - 假定为“m”(这将 在 PHP 的未来版本中抛出错误)

PHP 警告:使用未定义的常量 d - 假定为“d”(这将 在 PHP 的未来版本中抛出错误)

PHP 警告:使用未定义的常量 H - 假定为“H”(这将 在 PHP 的未来版本中抛出错误)

PHP 警告:使用未定义的常量 i - 假定为“i”(这将 在 PHP 的未来版本中抛出错误)PHP 警告:使用 未定义的常量 s - 假定为 's'(这将在 PHP 的未来版本)

我似乎找不到任何文档(或理想情况下)示例来说明如何更新代码以解决此问题。

感谢您的帮助

【问题讨论】:

  • 何不简化为'Y-m-d\TH:i:s\Z'
  • 这些不是常量,而是字符串。有关示例,请参阅the docs
  • print date('Y-m-d\TH:i:s\Z'); 注意“常量”实际上是字符串的一部分
  • 只是展示,在关闭错误报告的情况下进行开发是个好主意,不是
  • "假设 'Y'" 是你的提示。 date(y.'-'.m.'-'.d) 假定为:date('y'.'-'.'m'.'-'.'d')->date('y-m-d')。 Q 中的代码是错误的,但由于怪癖而起作用。错误是因为怪癖不再有效

标签: php constants


【解决方案1】:

此更改不是从 7.2 开始的 - 可能只是您现在有不同的错误报告设置。您尝试使用的值在 PHP 中根本不是常量,但是当您有不同的错误报告设置时,您还没有收到关于它们不是常量的警告 - 它们只是被用作字符串而是。

使用date的正确方法是直接发送格式化字符串:

$created_date = date('Y-m-d\TH:i:s\Z', $created_timestamp);

如果您尝试创建 iso8601 时间戳,也可以使用 DATE_ATOM 常量(它可能会使用 +00:00 而不是 Z)。

【讨论】:

  • 效果很好,非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-24
  • 2019-07-12
  • 2020-03-12
相关资源
最近更新 更多