【发布时间】:2014-10-12 14:28:49
【问题描述】:
我有这个代码。它有效,但有可能做得更好吗?用更少的代码?
public function __construct($type ,$brand, $model, $year, $mileage, $height, $width, $depth, $ps, $color, $price, $value, $seats)
{
if (is_int($type)) {
$this->_type = $type;
} else {
throw new Exception('Wrong Value in Type. Expected integer');
}
}
...
我创建一个这样的对象
try {
$firstCar = new Car(1, 'Audi', 'A3', 2011, 94512, 2, 2, 2, 105, 'Black', 1000, 1920, 5);
} catch ( Exception $error) {
die($error->getMessage());
}
我对 2 个类中的每个变量重复“IF-ELSE”语句。它的代码太多了。
这里有一些建议吗?
【问题讨论】:
-
这感觉就像你向构造函数传递了太多参数:如果你必须这样做,而不是为每个属性使用 setter 方法,可能会循环
func_get_args() -
对于codereview.stackexchange.com来说,这似乎是一个很好的问题
-
嘿@MarkBaker。也许吧,但我找不到更好的解决方案。阅读一些有关设计模式的内容,但我不知道如何处理该代码。
-
我认为验证输入不是班级的工作。这应该在每次将信息传递给构造函数之前在外部完成。
-
在@mark-baker 评论之后,re:循环通过 func_get_args()... 您可以将该数组传递给类中的私有方法,该方法仅验证所有元素。或者每个参数的设置器都有自己的验证器。这里还有另一个关于同一件事的讨论:stackoverflow.com/questions/15186202/…
标签: php oop design-patterns