<?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";
}
}
答案 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;