php 静态函数

2022-08-30 07:24:50

我有一个关于php中的静态函数的问题。

假设我有一个类

class test {
    public function sayHi() {
        echo 'hi';
    }
}

如果我这样做,它可以毫无问题地工作。test::sayHi();

class test {
    public static function sayHi() {
        echo 'hi';
    }
}

test::sayHi();也可以。

头等舱和二等舱有什么区别?

静态函数有什么特别之处?


答案 1

在第一个类中,实际上是一个实例方法,您将其作为静态方法调用,并且您可以逃脱它,因为从不引用。sayHi()sayHi()$this

静态函数与类相关联,而不是类的实例。因此,不能从静态上下文中获得(不指向任何对象)。$this$this


答案 2

简单地说,静态函数独立于它们所属的类运行。

$this表示,这是此类的对象。它不适用于静态函数。

class test {
    public function sayHi($hi = "Hi") {
        $this->hi = $hi;
        return $this->hi;
    }
}
class test1 {
    public static function sayHi($hi) {
        $hi = "Hi";
        return $hi;
    }
}

//  Test
$mytest = new test();
print $mytest->sayHi('hello');  // returns 'hello'
print test1::sayHi('hello');    //  returns 'Hi'

推荐