gpt4 book ai didi

java - Kent Beck 的《TDD by example》一书中的 Java 如何用 PHP 表示?

转载 作者:太空宇宙 更新时间:2023-11-04 07:39:39 24 4
gpt4 key购买 nike

我正在自学 PHP 以及 TDD(使用 PHP 和 PHPUnit)。我正在读这本书Test-driven Development by Example作者:肯特·贝克。

例如,在第 3 章中,他建议将其用于平等测试:

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

在 Dollar 类中,他重写了 equals 方法,如下所示:

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

我是 PHP 新手,这可能没有帮助,但我不确定如何将其转换为 PHP。

对于我尝试的第一个功能:

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

这是正确的道路吗?据我所知,现在 PHP 必须将对象分配给变量,对吗?在那条路线之前我探索过

$this->assertTrue(new Dollar(5)->equals(new Dollar(5))); 

抛出语法错误。令人惊讶的是用 $this->assertEquals(new Dollar(10), $five->times(2)); 重构了早期的 testMultiplication 方法不过,通过了。

equals就方法而言,这对我来说完全陌生,我只是不知道从哪里开始。

如何在 PHP 中正确重构上述内容?如果我能答对一些,我想我可以处理其余的例子。

作为一个附带问题,有谁知道这个 Money 示例是否已在 PHP 中实现,并且代码是否存在?

最佳答案

您的代码如下

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

这意味着(一行一行)

  1. 定义一个名为 equals 的新方法,该方法将返回 truefalse 并需要 Object 类型的对象(在 Java 中表示每个对象)作为参数
  2. Object 类型的对象转换为 Dollar 类型 (wiki on type conversion) ,现在您可以使用该对象的公共(public)方法和属性
  3. 将当前上下文中的属性 amount 与来自 dollar 的属性(来自 object)进行比较

您现在可以将该方法逐行翻译为 PHP without the need of typecasting

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

可以使用不同的方法声明:

public function equals(Dollar $object)

这样您就可以确保只比较相同类型的两个对象。

用法也和Java类似:

$a = new Dollar(5);
$b = new Dollar(5);
if ($a->equals($b))
print "TRUE";
else
print "FALSE";

要了解有关 PHP 中对象比较的更多信息,您最好阅读 manual

关于java - Kent Beck 的《TDD by example》一书中的 Java 如何用 PHP 表示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16261575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com