【问题标题】:PHP : Very big no sense with variablePHP:变量非常大没有意义
【发布时间】:2015-02-04 20:35:13
【问题描述】:

我正在开发一个 Symfony 2 应用程序。 我有一个使用 Doctrine 管理的对象,它有 private $beginDate 这是一个 \DateTime。

我有一个非常重要的功能:

public function isBefore($timestamp)
{
    print_r($this->beginDate);
    echo "<br />";
    $date = $this->beginDate->format("Y-m-d"); // (line 44)
    echo $date;
    echo "<br />";
    return $this->beginDate->getTimestamp() < $timestamp;
}

第一个 print_r 显示:DateTime 对象([date] => 2015-01-01 00:00:00 [timezone_type] => 3 [timezone] => Europe/Paris)

beginDate-&gt;format 给我:错误:在 /var/.../GS/AcmeBundle/Entity/ARecur.php 第 44 行中的非对象上调用成员函数 format()

echo $date 显示:2015-01-01

$this-&gt;beginDate-&gt;getTimestamp() 什么也没说,因为第 44 行阻止了其他错误(但没有第 44 行,我在这一行也遇到了同样的错误!)

我的 PHP 版本:

PHP 5.4.4-14+deb7u14 (cli)(构建时间:2014 年 8 月 21 日 08:36:44) 版权所有 (c) 1997-2012 PHP 集团 Zend Engine v2.4.0,版权所有 (c) 1998-2012 Zend Technologies

任何想法(抱歉我的英语不好) 祝你有美好的一天:)

【问题讨论】:

  • 如果在$date = $this-&gt;beginDate-&gt;format("Y-m-d"); 上抛出错误,echo $date; 将不会显示任何内容您确定错误出现在您正在调试的同一文件的第 44 行吗?

标签: php symfony datetime doctrine


【解决方案1】:

我找到了一个解决方案,不是很好,但它不会让我的应用崩溃:

public function isBefore($timestamp)
{
    $myDate = json_decode(json_encode($this->beginDate), true); 
    return strtotime($myDate['date']) < $timestamp;
}

【讨论】:

  • 这完全没有意义。您是在发布实际代码还是在“清理它”?像@STLMikey 一样,我怀疑您正在查看错误的文件。
【解决方案2】:

删除 echo "&lt;br /&gt;" 并尝试,在代码中混合 html 并不好。

【讨论】:

  • 是调试用的,我真正的功能是: public function isBefore($timestamp) { return $this->beginDate->getTimestamp()
  • 打印出$this,看看有什么不同
  • 在此,我可以像 DateTime 对象这样的对象 ( [date] => 2015-01-01 00:00:00 [timezone_type] => 3 [timezone] => Europe/巴黎)
  • 那么这是第一次打印的对象吗?第二次打印呢?在第二次打印中,只需打印出 $this
  • 追加 ->format("Y-m-d") 到你的第一个对象,如果有错误,那么你知道它是什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多