0

PHP中哪种设计理念更好;将变量传递给函数 myFunct() 还是不传递变量?

<?php
class A{
  public $myvar=1;
  public function myFunc($myvar){
    $this->myvar=$myvar+1;
  }
}
$myA=new A();
$myA->myFunc($myA->myvar);

// OR THIS ONE

class A{
  public $myvar=1;
  public function myFunc(){
    $this->myvar=$this->myvar+1;
  }
}
$myA=new A();
$myA->myFunc();

?>

这可能是我试图理解的一个更好的例子:

class PhotosBasicClasses{
    protected $srcImage;    
    protected $fileImageTypeFlag;    
    public function createThumb($srcImage,$fileImageTypeFlag){    
         $this->srcImage=$srcImage;
         $this->fileImageTypeFlag=$fileImageTypeFlag;
         $resourceNewImage=$this->imageCreateFromFormat($srcImage,$fileImageTypeFlag);  //with or without the parameters is better?!
    
    }
    protected function imageCreateFromFormat($srcImage,$fileImageTypeFlag){   
        switch($fileImageTypeFlag){   //this is my problem: would be better to use the class variable or the internal variable($fileImageTypeFlag or $this->fileImageTypeFlag )
            case 'jpeg': return imagecreatefromjpeg($srcImage);break;
            case 'png': return imagecreatefrompng($srcImage);break;
            case 'gif': return imagecreatefromgif($srcImage);break;
            default: return "error  source file format";
                        }
}
4

2 回答 2

2

通常保留描述您的类的类范围变量,并且通常是您的大多数“重要”(方法也描述类可以做什么或具有什么)方法所必需的。

乍一看,在您的情况下,该方法imageCreateFromFormat($srcImage,$fileImageTypeFlag)看起来不错且自包含。但是,createThumb如果它所做的只是您发布的方法,则将其与两个类变量一起删除,并将另一个方法重命名为 createThumb。

如果它未完成并且在调用该方法之后imageCreateFromFormat将裁剪图像并创建缩略图,那么没有理由让类范围变量可以删除它们,除非您打算重命名类并添加一堆使用这些的方法两个变量。

最后,必须注意类名,使用复数和单词类是不好的做法。

于 2013-10-20T14:05:16.143 回答
0

这两个例子都不好。如果您想拥有对象变量,最好将其设为私有。

顺便说一句,您的示例正在执行不同的任务,因为首先通过函数参数获取变量将其递增一并保存到对象变量,而第二个示例仅将对象变量递增一。

而不是“$this->myvar = $this->myvar+1;” 你可以使用“$this->myvar++;”

于 2013-10-20T13:22:25.757 回答