靜態方法調用非靜態方法: 在類中靜態方法中,需要實例化對象,然后再調用類中的方法
非靜態方法調用靜態方法: 可以self
或者 類名加::
的形式調用
如下面的案例:
<?php
class A{
public function noneStaticFun(){
echo __CLASS__." none static function<br/>";
}
public static function staticFun(){
echo __CLASS__." static function<br/>";
//靜態方法調用非靜態方法,需要實例化對象然后再調用對象中的非靜態方法
(new A())->noneStaticFun();
}
public function testCallStaticFun(){
echo "call static function<br/>";
//調用本類的靜態方法,使用 self關鍵字或者類名
self::staticFun();
//A::staticFun(); //也可以使用這種方式
//調用其它類的靜態方法,直接使用類名::方法名的形式調用
B::myStaticFun();
}
}
class B{
public static function myStaticFun(){
echo __CLASS__." static function<br/>";
}
}
//演示
$testA = new A();
$testA->testCallStaticFun();
A::staticFun();
運行結果:
call static function
A static function
A none static function
B static function
A static function
A none static function