用途:static 關鍵字來定義靜態(tài)方法和屬性屏镊。static 也可用于定義靜態(tài)變量以及后期靜態(tài)綁定
1 notice:instance可以調用靜態(tài)方法而不能調用靜態(tài)屬性.
所謂的instance調用是說用->的方式調用
在instance中如何調用其靜態(tài)屬性?
class bartest
{
static $bar = 'bar';
static function barbar()
{
echo 'barbar';
}
}
Route::get('/test', function () {
$bartest = new bartest();
echo $bartest->bar;// Accessing static property bartest::$bar as non static
echo $bartest::$bar;// bar
echo $bartest::bar;// ubdefined class constant 'bar'
$bartest->barbar();// barbar
});
實例(instance)里如何調用靜態(tài)屬性? instance::$pro
2 靜態(tài)變量
class bartest
{
function barbar()
{
static $var = 1;
echo $var;
$var++;
}
}
Route::get('/test', function () {
$new = new bartest();
$new->barbar();
$new->barbar();
$new->barbar();
$new->barbar();
});
這樣我們能獲得1234.由此可知靜態(tài)變量定義后是不受<code> static $var = 1;</code>影響的,而能hold住值,得到累加的效果,可用于遞歸.
3 后期靜態(tài)綁定(self和static)
用于在繼承范圍內引用靜態(tài)調用的類
如果父類子類都有一個叫func()的方法,父類中用self::func()和static::func()有什么區(qū)別呢?
self和static區(qū)別在于:子類繼承后調用的self::func()執(zhí)行的是父類的func()而static::func()繞過繼承關系(雖然父類也有這個方法)調用的是子類的func()