靜態方法、屬性
定義
使用static
關鍵字定義;
聲明類屬性或方法爲靜態,即可以不實例化,直接訪問。
注意:
1)靜態屬性,不可以通過實例化對象訪問;
2)靜態方法,可以;
3)靜態方法,不可以使用$this
使用方法
:: 或 self::
具體如下所示:
訪問位置 調用屬性 調用方法
類的內部/外部 類名::屬性名 類名::方法名
內部 self::屬性名 self/類名::方法名
綜合例子
<?php
class MyClass
{
// 靜態屬性
public static $a = 'static';
// 靜態方法
public static function func1()
{
echo '靜態方法';
// 類的內部調用靜態屬性
echo MyClass::$a;
echo self::$a;
// 類的內部調用靜態方法
MyClass::func2();
self::func2();
}
// 試驗靜態方法調用另一個靜態方法
public static function func2()
{
echo 'This is static function 2.';
}
}
// 類的外部調用靜態屬性、方法
echo MyClass::$a;
MyClass::func1();
// 實例化後再調用
$me = new MyClass();
echo $me::$a; // 調用成功
// echo $me ->a; 調用失敗
$me -> func1(); // 調用成功
常量
const
可以把類中始終不變的值,定義爲常量。
常量的值,必須是一個定值。
調用方法,同static。
例子
class MyClass
{
public static $a = 'abc';
const NUM = 123;
}
echo MyClass::$a;
echo '<br/>';
echo MyClass::NUM;
echo '<br/>';
// 修改靜態屬性
MyClass::$a = 'def';
echo MyClass::$a;
echo '<br/>';
// 修改常量
//MyClass::NUM = 234; 賦值失敗