PHP OOP理论 – 在课堂内外进行错误检查?

前端之家收集整理的这篇文章主要介绍了PHP OOP理论 – 在课堂内外进行错误检查?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在过渡到使用OOP进行我的所有项目,历史上我所构建的一切都非常小,OOP似乎不是一个有效的选择,但现在有大型项目.然而最近我遇到了越来越多的“最佳实践”问题,我找不到答案.

例如,假设我有以下内容

  1. class numbers{
  2.  
  3. function __construct($number){
  4. $this->number = (int)$number;
  5. }
  6.  
  7. function add($add){
  8. $this->added = $this->number + $add;
  9. }
  10.  
  11. function multiply($multiply){
  12. $this->multiplied = $this->number * $multiply;
  13. }
  14.  
  15. function minus($minus){
  16. $this->minused = $this->number - $minus;
  17. }
  18.  
  19. function number(){
  20. return $this->number();
  21. }
  22. }

现在让我们说我想应用add,然后乘以然后减去.每个阶段都可能失败(我没有在示例中包含它,但想象它就在那里).这是我的问题所在,我应该这样做:

  1. $numbers = new numbers(8);
  2. if($numbers->add(7)){
  3. if($numbers->multiply(6)){
  4. if($numbers->minus(7){
  5. echo $numbers->number();
  6. }else{
  7. echo 'error minusing';
  8. }
  9. }else{
  10. echo 'error multiplying number';
  11. }
  12. }else{
  13. echo 'error adding number';
  14. }

或者我应该在构造函数中包含该部分,例如:

  1. class numbers{
  2.  
  3. function __construct($number){
  4. $this->add(6);
  5. $this->multiply(9);
  6. $this->minus(7);
  7. if($this->error){
  8. return false;
  9. }else{
  10. return true;
  11. }
  12. }
  13.  
  14. function add($add){
  15. $this->added = $this->number + $add;
  16. if(!this->added){
  17. $this->error = "couldn't be added";
  18. }
  19. }
  20.  
  21. function multiply($multiply){
  22. $this->multiplied = $this->number * $multiply;
  23. if(!this->multiplied){
  24. $this->error = "couldn't be multiplied";
  25. }
  26. }
  27.  
  28. function minus($minus){
  29. $this->minused = $this->number - $minus;
  30. if(!this->minused){
  31. $this->error = "couldn't be minused";
  32. }
  33. }
  34.  
  35. function number(){
  36. return $this->number();
  37. }
  38.  
  39. function error(){
  40. return $this->error();
  41. }
  42.  
  43. }

然后简单地做:

  1. $numbers = new numbers(5);
  2. if($numbers){
  3. echo $numbers->number();
  4. }else{
  5. echo $numbers->error();
  6. }

对不起,如果示例是长卷(也忽略错误,我在这里写它只是为了概述我正在尝试做的,这不是我正在使用的代码…)但我不知道如何短语没有例子的问题.基本上,我应该检查班级内部的错误,还是应该在我打电话给班级时在外面做?

在类内部更新时强制执行一致性几乎总是有意义的(即,任何时候方法都可以改变类的内部状态,检查输入).如果输入格式不正确,或者如果该操作违反某些类不变量,则使用 exceptions使其成为调用者的问题.

猜你在找的PHP相关文章