我正在过渡到使用OOP进行我的所有项目,历史上我所构建的一切都非常小,OOP似乎不是一个有效的选择,但现在有大型项目.然而最近我遇到了越来越多的“最佳实践”问题,我找不到答案.
例如,假设我有以下内容:
class numbers{ function __construct($number){ $this->number = (int)$number; } function add($add){ $this->added = $this->number + $add; } function multiply($multiply){ $this->multiplied = $this->number * $multiply; } function minus($minus){ $this->minused = $this->number - $minus; } function number(){ return $this->number(); } }
现在让我们说我想应用add,然后乘以然后减去.每个阶段都可能失败(我没有在示例中包含它,但想象它就在那里).这是我的问题所在,我应该这样做:
$numbers = new numbers(8); if($numbers->add(7)){ if($numbers->multiply(6)){ if($numbers->minus(7){ echo $numbers->number(); }else{ echo 'error minusing'; } }else{ echo 'error multiplying number'; } }else{ echo 'error adding number'; }
或者我应该在构造函数中包含该部分,例如:
class numbers{ function __construct($number){ $this->add(6); $this->multiply(9); $this->minus(7); if($this->error){ return false; }else{ return true; } } function add($add){ $this->added = $this->number + $add; if(!this->added){ $this->error = "couldn't be added"; } } function multiply($multiply){ $this->multiplied = $this->number * $multiply; if(!this->multiplied){ $this->error = "couldn't be multiplied"; } } function minus($minus){ $this->minused = $this->number - $minus; if(!this->minused){ $this->error = "couldn't be minused"; } } function number(){ return $this->number(); } function error(){ return $this->error(); } }
然后简单地做:
$numbers = new numbers(5); if($numbers){ echo $numbers->number(); }else{ echo $numbers->error(); }
对不起,如果示例是长卷(也忽略错误,我在这里写它只是为了概述我正在尝试做的,这不是我正在使用的代码…)但我不知道如何短语没有例子的问题.基本上,我应该检查班级内部的错误,还是应该在我打电话给班级时在外面做?
在类内部更新时强制执行一致性几乎总是有意义的(即,任何时候方法都可以改变类的内部状态,检查输入).如果输入格式不正确,或者如果该操作违反某些类不变量,则使用
exceptions使其成为调用者的问题.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。