2012-03-07 31 views
6

Tôi đã trải qua cuốn sách có tên "Phát triển thử nghiệm theo Ví dụ" của tác giả Kent Beck.Đối tượng của lớp Dollar không thể được chuyển đổi thành int

Tôi đang cố gắng viết một hàm tương tự trong php nhưng không hiểu các bước.

chức năng Original:

thử nghiệm chức năng:

public void testEquality() { 
    assertTrue(new Dollar(5).equals(new Dollar(5))); 
    assertFalse(new Dollar(5).equals(new Dollar(6))); 
} 

chức năng Class:

public boolean equals(Object object) { 
    Dollar dollar = (Dollar) object; 
    return amount == dollar.amount; 
} 

Mã của tôi:

chức năng kiểm tra:

public function setup() { 
    $this->dollarFive = new Dollar(5); 
} 

public function testEquality() { 
    $this->assertTrue($this->dollarFive->equals(new Dollar(5))); 
} 

Lớp Chức năng:

class Dollar 
{ 
    public function __construct($amount) { 
    $this->amount = (int) $amount; 
    } 

    public function equals(Dollar $object) { 
    $this->Object = $object; 
    return $this->amount == $this->Object; 
    }  
} 

Trong khi thực hiện các trường hợp thử nghiệm tôi đang nhận được lỗi sau.

đối tượng của lớp Dollar không thể được chuyển đổi sang int

Cần giúp đỡ về vấn đề này. Làm thế nào tôi có thể sửa lỗi này?

+0

'$ this-> Object = $ object;' tốt cho là gì? – KingCrunch

Trả lời

6
return $this->amount == $this->Object; 

$this->amount là một int, $this->Object không phải là int. Bạn đã cố gắng để so sánh với nhau, do đó bạn sẽ nhận được

đối tượng của lớp Dollar không thể được chuyển đổi sang int

Bạn có thể có nghĩa là

return $this->amount == $this->Object->amount; 

Tuy nhiên, đó cũng là một cái gì đó tò mò trong lớp học của bạn

class Dollar { 
    public $amount = 0; // <-- forgotten 
    public function __construct($amount) { 
    $this->amount = (int) $amount; 
    } 

    public function equals(Dollar $object) { 
    $this->Object = $object; // <--- ?!? 
    return $this->amount == $this->Object; 
    }  
} 

có thể bạn sẽ muốn chỉ

public function equals(Dollar $object) { 
    return $this->amount == $object->amount; 
    }  
Các vấn đề liên quan