2014-07-17 3 views
0

아래 클래스의 값을 변수로 저장하려고합니다. 나중에 사용할 수는 있지만 제대로 작동하지 않습니다.변수에서 값을 저장할 수 없습니다.

아이디어가 있으십니까?

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 변수에 저장하십시오.하지만 그걸 반향 할 수 없다면, 저장하지 않을 수도 있습니다.

답변

1

클래스 생성자가 직접 또는 간접적으로 반환 할 수있는 유일한 것 자체입니다.

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

위의 행을 추가하고 생성자를 제거하십시오.

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

echo $test; 

설명 : 와 에코 전화 교체 은 항상 갖고 새로운 클래스 자체를 반환하기 때문에 echoDates 개체의 인스턴스로하려고했다, 초기 코드를 반환은 당신이 무시되었습니다했다 실제로 반환 값은 생성자에게 반환되었지만 거기에서 아무데도 가지 않았기 때문에 버려졌습니다.

에코를 계획하고 있다면 대안이 될 수 있습니다. Class Instance Object을 에코하려고 할 때 트리거되는 __tostring() 함수를 추가하는 것이 좋습니다.

1

클래스 생성자는 방금 만든 새 클래스를 제외하고는 아무 것도 반환 할 수 없습니다. 객체는 에코 될 수 없습니다. var_dump()를 시도하거나 클래스에 메소드를 추가하십시오.

public function __toString(){return 'something useful';} 
관련 문제