ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法”。 static的属性,在内存中只有一份,为所有的实例共用。也就是说,在内存中即使有多个实例,静态的属性也只有一份。 static关键字可以用来修饰变量、方法。 通过static关键字定义的属性或方法(例如static $web),只能由当前类通过【self::$web】来访问,其他类和子类是无法访问的。 例如下面这个例子,通过public声明的变量$web,因为实例化子类对象有4个,所以它最后会输出4个结果: class Config{ public $web; function __construct(){ echo '<pre>'; $this->show(); } public function show(){ if(empty($this->web)){ $this->web = include 'test_arry.php'; print_r($this->web); } } } $config = new Config(); $a = new Config(); $b = new Config(); $c = new Config(); 但是以下代码使用static声明的变量,尽管有很多的实例化对象,但是最后的输出结果只有一个: class Config{ static $web; function __construct(){ echo '<pre>'; $this->show(); } static function show(){ if(empty(self::$web)){ self::$web = include 'test_arry.php'; print_r(self::$web); } } } $config = new Config(); $a = new Config(); $b = new Config(); $c = new Config(); include引用的文件内容是以下代码: return array( 'web_config'=>array( 'webname'=>'fxxy', 'weburl'=>'http://www.baidu.com' ), 'db_config'=>array( 'db_host'=>'localhost', 'db_name'=>'meshop', 'db_pwd'=>'123456' ) );