靜態方法的規則和靜態變量是相同的。使用ststic關鍵字可以將方法標識為靜態方法,通過類的名稱和作用域限定操作符::可以訪問靜態方法。
靜態方法和非靜態方法之間有一個很重要的區別,就是在調用靜態方法時,我們不需要創建類的實例。 Program List:用類名作為參數個用類名作為參數可以解決非繼承的靜態問題。
<?php
class Fruit {
public static $category = "I'm fruit";
static function find($class)
{
$vars = get_class_vars($class) ;
echo $vars['category'] ;
}
}
class Apple extends Fruit {
public static $category = "I'm Apple";
}
Apple::find("Apple");
?>
複製代碼
程序運行結果:
I'm Apple
複製代碼
Program List:重寫基類方法在派生類重寫基類的方法。
<?php
class Fruit {
static function Foo ( $class = __CLASS__ ) {
call_user_func(array($class, 'Color'));
}
}
class Apple extends Fruit {
static function Foo ( $class = __CLASS__ ) {
parent::Foo($class);
}
static function Color() {
echo "Apple's color is red";
}
}
Apple::Foo(); // This time it works.
?>
複製代碼
程序運行結果:
Apple's color is red
複製代碼
Program List:靜態數組的使用靜態和const作用域都可以用::操作符訪問,如果你想使用::操作符訪問數組,你需要事先將數組聲明為靜態。