PHP方法和类设计

时间:2013-10-20 13:16:31

标签: php oop

在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";
                        }
}

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:1)

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

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

而不是&#34; $ this-&gt; myvar = $ this-&gt; myvar + 1;&#34;你可以使用&#34; $ this-&gt; myvar ++;&#34;