参见英文答案 >
Why can’t I access DateTime->date in PHP’s DateTime class? Is it a bug? 4个
我是PHP的新手.以下错误(?)花了我891723498小时来查找我的代码.有人可以向我解释是什么导致这种情况,也许是一种解决方法吗?现在我刚刚离开json_encode()调用.
我是PHP的新手.以下错误(?)花了我891723498小时来查找我的代码.有人可以向我解释是什么导致这种情况,也许是一种解决方法吗?现在我刚刚离开json_encode()调用.
这是我的代码的简化版本.可能还有其他函数比json_encode()具有相同的效果,我不知道.
这是我的repl的直接复制粘贴(使用Boris PHP repl – https://github.com/borisrepl/boris).
./bin/boris [1] boris> function broken () { [1] *> $timezone = new DateTimeZone("America/New_York"); [1] *> $datetime = new DateTime("Now",$timezone); [1] *> return date_parse($datetime->date); [1] *> } // NULL [2] boris> [2] *> function works () { [2] *> $timezone = new DateTimeZone("America/New_York"); [2] *> $datetime = new DateTime("Now",$timezone); [2] *> json_encode($datetime); [2] *> return date_parse($datetime->date); [2] *> } // NULL [3] boris> broken(); PHP Notice: Undefined property: DateTime::$date in /home/sirrobert/Projects/sirrobert/archon/code/repl/boris/lib/Boris/EvalWorker.PHP(152) : eval()'d code on line 4 // array( // 'year' => false,// 'month' => false,// 'day' => false,// 'hour' => false,// 'minute' => false,// 'second' => false,// 'fraction' => false,// 'warning_count' => 0,// 'warnings' => array( // // ),// 'error_count' => 1,// 'errors' => array( // 0 => 'Empty string' // ),// 'is_localtime' => false // ) [4] boris> works(); // array( // 'year' => 2016,// 'month' => 11,// 'day' => 30,// 'hour' => 16,// 'minute' => 53,// 'second' => 35,// 'fraction' => 0.0,// 'error_count' => 0,// 'errors' => array( // // ),// 'is_localtime' => false // ) [5] boris>
这是来自PHP -a repl的同样的东西,输出的帮助较少.
PHP > function broken () { PHP { $timezone = new DateTimeZone("America/New_York"); PHP { $datetime = new DateTime("Now",$timezone); PHP { return date_parse($datetime->date); PHP { } PHP > PHP > function works () { PHP { $timezone = new DateTimeZone("America/New_York"); PHP { $datetime = new DateTime("Now",$timezone); PHP { json_encode($datetime); PHP { return date_parse($datetime->date); PHP { } PHP > PHP > broken() PHP > ; PHP Notice: Undefined property: DateTime::$date in PHP shell code on line 4 PHP > works(); PHP >
为什么世界上json_encode($datetime)“实现”$datetime对象?
我最好的猜测是:
>当json_encode()中使用$datetime对象时,某些类型的活动正在发生,而不是在为属性访问它时
要么
>我在并行化的内部代码中遇到某种竞争条件?
解决方法
好的,根据提供的评论和链接,看起来这是一个已知的(但没有优先级)问题,每
http://bugs.php.net/bug.php?id=49382和
Why can’t I access DateTime->date in PHP’s DateTime class? Is it a bug?
问题似乎是延迟加载DateTime类,通过直接访问对象的属性显然没有正确触发.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。