1、static方法就相當於普通的方法壹模壹樣,但是給方法分了個類。語義化代碼。
2、實例化class時不會重新將static方法聲明第二遍
比如:
class?People{private?$name;
public?__construct($name?=?""){
$this->name?=?$name;
}
//此方法就不適合用static方法,因為他要使用實例的成員變量name
public?function?sayMyName(){
echo?"My?name?is?".$this->name;
}
//類似這種方法的就最好寫成static方法
public?static?function?isMe($obj){
return?get_class($obj)?==?"People"true?:?false;
}
}
$me?=?new?People("s524797336");
$me->sayMyName();//輸出s524797336
var_dump(People::isMe($me));//輸出bool?true
//其實如果直接有個方法如下,他的作用跟static方法作用其實是壹樣的
function?isPeople($obj){
return?get_class($obj)?==?"People"true?:?false;
}
var_dump(isPeople($me));//輸出bool?true
總而言之,他就是將普通方法封裝到了類裏面,就像上面,放到people類裏面就是isMe,在公用的裏面就是isPeople,雖然完成的事情是壹樣的,但是意義不同
妳可以把static方法當成某個class中的***用方法