无法将值存储到类中的变量

时间:2014-07-17 14:03:04

标签: php class

我试图将下面的类中的值存储为变量,因此我可以在以后使用它,但我无法使其正常工作。

有什么想法吗?

class Dates {


    public function __construct($date) {
    $this->DateCompare($date);
    }
    public function DateCompare($date) {
        $date1 = new DateTime("2015-04-08");
        $date2 = new DateTime($date);
        $diff=date_diff($date1,$date2);
        return $diff->format("%a");

    }
}

echo $test = new Dates("2015-05-04");

错误我得到:可捕获的致命错误:类/日期对象无法转换为/virtual/index.php中的字符串

如前所述,我不想回应它,只是将它存储在$test变量中,但如果我甚至无法回应它,那么我就是这样。也不存储它。

2 个答案:

答案 0 :(得分:1)

类构造函数可以[直接或间接]返回的唯一内容就是它自己。

public static function instance() { return new self(); }

添加上面的行,然后摆脱构造函数。 用以下代码替换echo调用:

$test = Dates::instance() -> DateCompare("2015-05-04");

echo $test;

说明:您的初始代码正在尝试echo Dates对象的实例,因为新的类 总是要返回自己的<? / EM> 实际上你已经抛弃了回报,因为它已经返回给构造函数但是没有从那里去任何地方。

另一种选择,如果你打算回声它;将添加__tostring()函数,当您尝试回显Class Instance Object时会触发该函数。

答案 1 :(得分:1)

类构造函数不能返回任何东西 - 除了刚刚创建的新类。对象无法回显。尝试使用var_dump()或尝试在类中添加__toString()方法:

public function __toString(){return 'something useful';}