2012-03-07 2 views
6

Я читал книгу под названием «Испытательное развитие на примере» Автор Кент Бек.Объект класса Доллар не может быть преобразован в int

Я пытаюсь написать аналогичную функцию в php, но не понимая шаги.

Оригинальная функция:

Тест функции:

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

функция Класс:

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

Мой код:

Функция тестирования:

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

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

Класс Функция:

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

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

При выполнении тестового примера я получаю следующее сообщение об ошибке.

Объект класса доллар не может быть преобразовано в целое

Нужна помощь по этому вопросу. Как я могу это исправить?

+0

Что такое '$ this-> Object = $ object;' good for? – KingCrunch

ответ

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

$this->amount является INT, $this->Object не является внутр. Вы попытались сравнить друг с другом, таким образом, вы получите

Объект класса доллар не может быть преобразовано в целое

Вы, вероятно, означает

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

Однако, есть и что-то Любопытство в вашем классе

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; 
    }  
} 

Вы, вероятно, захотите всего лишь

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