我有这段代码:
class Date_Time{
private static $month;
private static $year;
private static $day;
public function Date_Time($format){
return self::getDate($format);
}
public static function getDate($date_format){
return self::replace_date_string($date_format);
}
public static function replace_date_string($string){
if(preg_match("/m/", $string)){
$string = preg_replace("/m/", self::getMonth(), $string);
}
if(preg_match("/Y/", $string)){
$string = preg_replace("/Y/", self::getYear(), $string);
}
return $string;
}
public static function getMonth(){
return date("m");
}
public static function getYear(){
return date("Y");
}
}
但如果我这样打印:
$date = new Date_Time("Y");
echo $date;
它给我一个错误说:
捕获致命错误:第2行的index.php中无法将类Date_Time的对象转换为字符串
我如何解决这个问题,它不会给我一个错误,以及是什么造成了这个错误。
答案 0 :(得分:3)
添加__toString()
方法
public function __toString() {
return $this->getYear() .'-'. $this->getMonth() .'-'. $this->getDay();
}
尝试打印整个对象时需要使用此方法。
对于PHP4:
public function toString() {
return $this->getYear() .'-'. $this->getMonth() .'-'. $this->getDay();
}
并手动调用此方法:
$date = new Date_Time("Y");
echo $date->toString();
答案 1 :(得分:2)
您需要实现一个返回字符串表示形式的魔术方法__toString()
。
答案 2 :(得分:0)
构造函数返回对象而不是值。所以避免从构造函数返回:
$date = new Date_Time();
echo $date::getDate("Y");
使用您当前的代码,您也可以手动调用构造函数,如下所示(但这不是一个好方法):
$date = new Date_Time("Y");
echo $date->Date_TIme("Y");