📅  最后修改于: 2023-12-03 15:12:51.107000             🧑  作者: Mango
在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中都是很有用的。静态方法可以直接从类中调用,而不需要创建类实例,而非静态方法必须从实例化的类中调用。如果我们需要从静态方法中调用非静态方法,我们可以在静态方法中创建类实例,然后从该实例中调用非静态方法。