用途: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.由此可知静态变量定义后是不受<code> static $var = 1;</code>影响的,而能hold住值,得到累加的效果,可用于递归.
3 后期静态绑定(self和static)
用于在继承范围内引用静态调用的类
如果父类子类都有一个叫func()的方法,父类中用self::func()和static::func()有什么区别呢?
self和static区别在于:子类继承后调用的self::func()执行的是父类的func()而static::func()绕过继承关系(虽然父类也有这个方法)调用的是子类的func()