📜  静态调用的非静态方法 php (1)

📅  最后修改于: 2023-12-03 15:12:51.107000             🧑  作者: Mango

静态调用的非静态方法 PHP

在PHP中,类的方法可以定义为静态方法或非静态方法。静态方法可以直接从类中调用,而不需要创建类实例。相反,非静态方法只能从类的实例中调用。有时,我们需要从静态方法中调用非静态方法,这时我们需要使用一个稍微复杂的方法。

什么是静态方法和非静态方法?

静态方法是属于类的方法,而不是属于类的实例的方法。在调用静态方法时,我们不需要实例化类。相反,我们可以在不实例化类的情况下从类中调用该方法。

class MyStaticClass {
    public static function myStaticMethod() {
        echo '这是一个静态方法';
    }
}

MyStaticClass::myStaticMethod();

这会在浏览器的屏幕上打印出”这是一个静态方法”这句话。请注意,在我们调用该方法时,并没有创建类的实例。

相反,非静态方法是通过一个实例化的类调用的方法。我们需要实例化类,然后才能从该实例化的类调用该方法。

class MyNonStaticClass {
    public function myNonStaticMethod() {
        echo '这是一个非静态方法';
    }
}

$myObject = new MyNonStaticClass();
$myObject->myNonStaticMethod();

这会在浏览器的屏幕上打印出”这是一个非静态方法”这句话。请注意,我们必须创建一个类实例,并从该实例调用该方法。

静态方法如何调用非静态方法?

静态方法只能从类中直接调用,因此我们无法直接从静态方法中调用非静态方法。我们需要在静态方法中创建类实例,然后从实例中调用该非静态方法。

class MyNonStaticClass {
    public function myNonStaticMethod() {
        echo '这是一个非静态方法';
    }
}

class MyStaticClass {
    public static function myStaticMethod() {
        $myObject = new MyNonStaticClass();
        $myObject->myNonStaticMethod();
    }
}

MyStaticClass::myStaticMethod();

这会在浏览器的屏幕上打印出”这是一个非静态方法”这句话。请注意,在我们的静态方法中,我们创建了类的实例,并从该实例调用了非静态方法。

总结

静态方法和非静态方法在PHP中都是很有用的。静态方法可以直接从类中调用,而不需要创建类实例,而非静态方法必须从实例化的类中调用。如果我们需要从静态方法中调用非静态方法,我们可以在静态方法中创建类实例,然后从该实例中调用非静态方法。