我试图将下面的类中的值存储为变量,因此我可以在以后使用它,但我无法使其正常工作。
有什么想法吗?
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
变量中,但如果我甚至无法回应它,那么我就是这样。也不存储它。
答案 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';}