static关键字

用途:static 关键字来定义静态方法和属性。static 也可用于定义静态变量以及后期静态绑定

1 notice:instance可以调用静态方法而不能调用静态属性.

所谓的instance调用是说用->的方式调用
在instance中如何调用其静态属性?

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)里如何调用静态属性? instance::$pro

2 静态变量

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.由此可知静态变量定义后是不受 static $var = 1;影响的,而能hold住值,得到累加的效果,可用于递归.

3 后期静态绑定(self和static)

用于在继承范围内引用静态调用的类
如果父类子类都有一个叫func()的方法,父类中用self::func()和static::func()有什么区别呢?
self和static区别在于:子类继承后调用的self::func()执行的是父类的func()而static::func()绕过继承关系(虽然父类也有这个方法)调用的是子类的func()

你可能感兴趣的:(static关键字)