php static 方法有什么好处

2025-05-15 05:20:48
推荐回答(3个)
回答1:

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中的共用方法

回答2:

  1. 静态方法不需要所在类被实例化就可以直接使用。

  2. 静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。

  3. 静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存。

回答3:

myclass class{
static function funone(){
echo "hello";
}
function funtwo(){
echo "hello";
}

}
//调用: funone
myclass :: funone();
//如果要调用funtwo 要先实例化
$mod = new myclass();

$mod->funtwo();

?>