static变量
static变量
php类中关于static变量的一些知识点。
访问测试
并不能通过类的实例对象,通过->运算符,来直接访问静态变量。
<?php
/**
* 2020-12-31 09:43:43
* 静态变量的访问测试
*/
class Demo{
public static $count = 10;
public function getCount(){
return self::$count;
}
}
$demo = new Demo();
var_dump($demo->count); //null
var_dump($demo->getCount()); //10
var_dump(Demo::$count); //10
var_dump($demo::$count); //10
思考:
成员函数里面的static 是多个对象共同拥有?还是,该对象单独拥有?
<?php
/**
* 2020-12-31 09:43:43
* 静态变量的访问测试
*/
class Demo{
public static $count = 10;
public function getCount($num=null){
static $count=1;
if($num){
$count = $num;
}
echo $count ."\n";
return $count;
}
}
$demo1 = new Demo();
$demo2 = new Demo();
$demo1->getCount(); //1
$demo2->getCount(); //1
$demo1->getCount(2); //2
$demo2->getCount(); //2
这说明,static 是全局变量,整体就一份。在代码初始化的时候,其值已经完成了初始化。
static变量,我愿意将其理解为:全局变量,但是访问作用域,可能限制在某个方法内,某个类中。